在上一節課,為了操作實例對象的私有屬性,我們定義了實例方法;同樣的,如果需要需要操作類的私有屬性,則應該定義類的方法。
默認的,在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 可將課程添加到書簽
舉報