python面向對象編程

1.類和實例java

類是抽象的模板,而實例是根據類建立出來的具體對象python

class Student(object):函數

       def __init__(self,name,score):
             self.name = name
             self.score =scorespa

       def print_score(self):
             print('%s : %s' % (self.name,self.score))調試

bart = Student('Bart Simpson',99)
bart.print_score()code

2.類的內部的訪問限制對象

變量前加上兩個下劃線表示對外隱藏該字段,若是須要訪問,須要編寫相關的get和set方法繼承

以雙下劃線開頭和結尾的變量爲特殊變量,能夠直接訪問。字符串

以一個下劃線開頭的變量能夠訪問,但不推薦這樣。(python沒有機制阻止,一切靠自覺)get

3.多態和繼承

多態:當須要傳入父類的多個子類時,只須要在定義時將父類傳入,在實際調用時,子類就會調用實際的方法

開閉原則:對擴展開放,對修改封閉

python相對於java來講是動態語言,父類傳參數不是必須的,但須要確保內部有方法能夠調用

4.獲取對象信息

type(str)來判斷對象類型    isinstance(a,b)用來判斷class的類型(a是否爲b)   

type能夠被isinstance來替代 (老是優先使用isinstance類型)

5.實例屬性和類屬性

實例屬性屬於各個實例全部,互不干擾;

類屬性屬於類全部,全部實例共享一個屬性;

不要對實例屬性和類屬性使用相同的名字。

6.使用@property

使用property裝飾器目的是限制類中屬性的取值或是否可讀,即對參數進行檢查

7.多繼承模式

不一樣於java中的單繼承,多實現的方式,pthon中使用的爲多繼承方式。以最頂層父類爲主,其餘類用Mixin修飾。

class Dog(Mammal, RunnableMixIn, CarnivorousMixIn):

8.定製類

__str__() /__repr__():返回字符串打印。區別:repr用來程序調試的

__iter__()/__next__():用於可迭代對象進行循環

__getitem__():取可迭代對象中的元素

__getattr__():動態修改屬性的取值

__call__():對實例進行調用    能夠把對象看做函數,把函數看做對象

9.枚舉類

python提供Enum('')來對多個元素進行枚舉

10.動態建立類

python是動態語言,函數和類的定義是在運行時建立的

能夠經過type()方法進行建立,還能夠經過元類方式建立

相關文章
相關標籤/搜索