1. 程式人生 > >Python2語法簡記(8):類

Python2語法簡記(8):類

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)的變數, 只能是允許這個類本身進行訪問了