Python2語法簡記(8):類
阿新 • • 發佈:2018-12-13
8 類
類變數(變數名前加 類名. 或cls. 或self.來訪問)、例項變數(在例項方法中定義,變數名前加 self.來訪問)、類方法、例項方法、靜態方法
class Animal: # 類物件
age = 0 # 類變數
def __init__(self, name): # 魔法方法 self.name = name # 例項變數 def smile(self): # 例項方法。 self指向例項物件 print self.age # 訪問類變數 self.age = 10 # 定義例項變數。這時候例項物件的__dict__字典中已經存在了age這個屬性。 print self.age # 訪問例項變數 @classmethod def run(cls): # 類方法。cls 指向類物件 pass @staticmethod def msg(): # 靜態方法,可以沒有引數 pass
類變數:所有例項化物件中是公用的。在類方法中通過“類名.變數名”, "cls.變數名"訪問,在例項方法中通過“self.變數名”訪問。
例項變數:定義在方法中的變數,只作用於當前例項的類。在例項方法中通過“self.變數名”定義後再訪問,如果不定義直接訪問,訪問的是類變數。
建立例項物件:a = Bird(‘Tom’),不支援new
animal1 = Animal(‘Tom’)。不支援new。
類的繼承:與C++類似,支援繼承、多重繼承
繼承、多重繼承、方法重寫 與C++類似。
class Parent: # 定義父類 def myMethod(self): print '呼叫父類方法' class Child(Parent): # 定義子類 def myMethod(self): print '呼叫子類方法' c = Child() # 子類例項 c.myMethod() # 子類呼叫重寫方法
單下劃線、雙下劃線、頭尾雙下劃線說明:控制訪問許可權,特殊方法
-
foo: 定義的是特殊方法,一般是系統定義名字 ,類似 init() 之類的。
-
_foo: 以單下劃線開頭的表示的是 protected 型別的變數,即保護型別只能允許其本身與子類進行訪問,不能用於 from module import *
-
__foo: 雙下劃線的表示的是私有型別(private)的變數, 只能是允許這個類本身進行訪問了