在上一節課,為了操作實例對象的私有屬性,我們定義了實例方法;同樣的,如果需要需要操作類的私有屬性,則應該定義類的方法。
默認的,在class中定義的全部是實例方法,實例方法第一個參數 self 是實例本身。
要在class中定義類方法,需要這么寫:
class Animal(object): __localtion = 'Asia' def __init__(self, name, age): self.name = name self.age = age @classmethod def set_localtion(cls, localtion): cls.__localtion = localtion @classmethod def get_localtion(cls): return cls.__localtion print(Animal.get_localtion()) # ==> Asia Animal.set_localtion('Afica') print(Animal.get_localtion()) # ==> Africa
和實例方法不同的是,這里有兩點需要特別注意:
因為是在類上調用,而非實例上調用,因此類方法無法獲得任何實例變量,只能獲得類的引用。
如果將類屬性count改為私有屬性__count,則外部無法獲取__count,但是可以通過一個類方法獲取,請編寫類方法獲得__count值。
注意類方法需要添加 @classmethod
參考答案:
class Animal(object): __localtion = 'Asia' __count = 0 def __init__(self, name, age): self.name = name self.age = age Animal.__count += 1 @classmethod def get_count(cls): return cls.__count dog = Animal('wangwang', 1) cat = Animal('mimi', 3) pig = Animal('panpan', 1) count = Animal.get_count() print(count)
請驗證,完成請求
由于請求次數過多,請先驗證,完成再次請求
打開微信掃碼自動綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報