在上一節(jié)課,為了操作實(shí)例對象的私有屬性,我們定義了實(shí)例方法;同樣的,如果需要需要操作類的私有屬性,則應(yīng)該定義類的方法。
默認(rèn)的,在class中定義的全部是實(shí)例方法,實(shí)例方法第一個參數(shù) self 是實(shí)例本身。
要在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
和實(shí)例方法不同的是,這里有兩點(diǎn)需要特別注意:
因?yàn)槭窃陬惿险{(diào)用,而非實(shí)例上調(diào)用,因此類方法無法獲得任何實(shí)例變量,只能獲得類的引用。
如果將類屬性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)
請驗(yàn)證,完成請求
由于請求次數(shù)過多,請先驗(yàn)證,完成再次請求
打開微信掃碼自動綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報