課程
/后端開發
/Python
/Python3 進階教程(新版)
在類Animal類內的__init__方法,使用count屬性,為什么要寫成Animal.count,直接用count不行嗎,或者self.count。
2022-02-11
源自:Python3 進階教程(新版) 2-5
正在回答
額,那么簡單
因為count是類屬性,所以用類名.count,self.*是實例屬性,學到后面才知道。:)
如果count改成__count變成類的私有屬性后,在__init__方法里無法直接__count訪問類的私有屬性,需要Animal.__count,嘗試了下self.__count也可以,我理解是__count本身是類的屬性,任何一個實例并不單獨具有這個屬性,但是可以通過實例調用類的get和set方法去修改類的屬性,就和直接用類名調用get和set方法效果是一樣的,比如下面的代碼里animal.set和dog.set都可以修改類的屬性__count。
class?Animal(object):???? ????__count?=?0???? ????def?__init__(self,?name,?age):???????? ????????self.name?=?name???????? ????????self.age?=?age???????? ????????#?__count?+=?1?#??E:?referenced?before?assignment???????? ????????Animal.__count?+=?1???? ????@classmethod???? ????def?set_count(cls,?count):???????? ????????cls.__count?=?count???? ????@classmethod???? ????def?get_count(cls):???????? ????????return?cls.__count???? ???????????????????? ????print(Animal.get_count())?#?0 ????Animal.set_count(2) ????print(Animal.get_count())?#?2 ????dog?=?Animal('shitty',?2)? ????dog.set_count(5)?????????? ????print(Animal.get_count())?#?5
舉報
學習函數式、模塊和面向對象編程,掌握Python高級程序設計
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2022-07-21
額,那么簡單
2022-02-13
因為count是類屬性,所以用類名.count,self.*是實例屬性,學到后面才知道。:)
2022-02-13
如果count改成__count變成類的私有屬性后,在__init__方法里無法直接__count訪問類的私有屬性,需要Animal.__count,嘗試了下self.__count也可以,我理解是__count本身是類的屬性,任何一個實例并不單獨具有這個屬性,但是可以通過實例調用類的get和set方法去修改類的屬性,就和直接用類名調用get和set方法效果是一樣的,比如下面的代碼里animal.set和dog.set都可以修改類的屬性__count。