面向對象編程

__slots__:限制該class實例能添加的屬性,__slots__定義的屬性僅對當前類實例起做用,對繼承的子類是不起做用的。python

@property:Python內置的一個裝飾器,負責把一個方法變成屬性調用。函數

  把一個getter方法變成屬性,只須要加上@property就能夠了;spa

  把一個setter方法變成屬性賦值,@property自己會建立了另外一個裝飾器@score.setter。設計

  還能夠定義只讀屬性,只定義getter方法,不定義setter方法就是一個只讀屬性。code

多重繼承:對象

  CLASS 類名(父類1,父類2,......) 例如:class Dog(Mammal, Runnable)繼承

MixIn:MixIn是一種在Python中常見的實現多繼承的設計,方便更好地看出繼承關係。

  例如:class Dog(Mammal, RunnableMixIn, CarnivorousMixIn)字符串

定製類:

  __str__:返回自定義的字符串格式。get

  __iter__:調用__iter__()將一個類實現for ... in循環,相似list或tuple,該方法返回一個迭代對象,Python的for循環就會不斷調用該迭代對象的__next__()方法拿到循環的下一個值,直到遇到StopIteration錯誤時退出循環。it

  __getitem__:像list那樣按照下標取出元素,須要實現__getitem__()方法。

  __getattr__:動態返回一個屬性,當調用不存在的屬性時,Python解釋器會試圖調用__getattr__()來嘗試得到屬性。

  __call__:能夠直接對實例進行調用其屬性和方法。經過callable()函數,能夠判斷一個對象是不是「可調用」對象。

枚舉類:

  Enum能夠把一組相關常量定義在一個class中,且class不可變,並且成員能夠直接比較。

  @unique裝飾器能夠幫助咱們檢查保證沒有重複值。

元類:

  type():能夠查看一個類型或變量的類型,type()函數既能夠返回一個對象的類型,又能夠建立出新的類型

    要建立一個class對象,type()函數依次傳入3個參數:  

      一、class的名稱;

      二、繼承的父類集合,Python支持多重繼承,若是隻有一個父類,注意tuple的單元素寫法;

      三、class的方法名稱與函數綁定。

  metaclass:先定義metaclass,就能夠建立類,最後建立實例。metaclass容許你建立類或者修改類。

相關文章
相關標籤/搜索