-
實(shí)例屬性的優(yōu)先級(jí)高于類屬性。實(shí)例屬性需要碼農(nóng)自行設(shè)置,他一般代表了想要表達(dá)的東西。
查看全部 -
需要注意__add__()函數(shù),它有一個(gè)參數(shù),表示的是運(yùn)算的第二個(gè)操作數(shù),比如:r1 + r2,那么在__add__()方法中的參數(shù),r指的就是r2,這個(gè)參數(shù)是運(yùn)算符重載的時(shí)候傳遞的。
為什么r表示r2?查看全部 -
通過(guò)自定義__len__()方法,可以讓len()函數(shù)返回相關(guān)的結(jié)果,如果沒(méi)有定義__len__()方法的類使用len()函數(shù)獲取長(zhǎng)度時(shí),將會(huì)引起異常。
查看全部 -
__str__()函數(shù)似乎沒(méi)有在自定義類Person中生效,這是為什么呢?
這是因?yàn)?Python 定義了__str()__和__repr__()兩種方法,__str()__用于顯示給用戶,而__repr__()用于顯示給開發(fā)人員,當(dāng)使用str()時(shí),實(shí)際調(diào)用的是__str__()方法,而直接輸入變量,調(diào)用的是__repr__()方法。查看全部 -
class Animal(object):? __count = 0? def __init__(self, name):? Animal.__count = Animal.__count + 1? self.name = name? print(Animal.__count)??p1 = Animal('Cat')?p2 = Animal('Dog')??print(Animal.__count)
—是私有屬性
查看全部 -
for k, v in kw.items():
? ? ? ? ? ?setattr(self, k, v)查看全部 -
對(duì)于實(shí)例變量,dir()返回所有實(shí)例屬性,包括__class__這類有特殊意義的屬性。注意到方法who也是p的一個(gè)屬性。
dir()返回的屬性是字符串列表,如果已知一個(gè)屬性名稱,要獲取或者設(shè)置對(duì)象的屬性,就需要用 getattr() 和 setattr( )函數(shù)了。查看全部 -
除了從一個(gè)父類繼承外,Python允許從多個(gè)父類繼承,稱為多重繼承。多重繼承和單繼承沒(méi)有特別大的差異,只是在括號(hào)內(nèi)加入多個(gè)需要繼承的類的名字即可。
查看全部 -
這種行為稱為多態(tài)。從定義上來(lái)講,Student和Teacher都擁有來(lái)自父類Person繼承的who()方法,以及自己定義的who()方法。但是在實(shí)際調(diào)用的時(shí)候,會(huì)首先查找自身的定義,如果自身有定義,則優(yōu)先使用自己定義的函數(shù);如果沒(méi)有定義,則順著繼承鏈向上找。
查看全部 -
這說(shuō)明在一條繼承鏈上,一個(gè)實(shí)例可以看成它本身的類型,也可以看成它父類的類型。
查看全部 -
在__init__()方法,需要調(diào)用super(Student, self).__init__(name, gender),來(lái)初始化從父類繼承過(guò)來(lái)的屬性
查看全部 -
和實(shí)例方法不同的是,這里有兩點(diǎn)需要特別注意:
類方法需要使用@classmethod來(lái)標(biāo)記為類方法,否則定義的還是實(shí)例方法
類方法的第一個(gè)參數(shù)將傳入類本身,通常將參數(shù)名命名為 cls,上面的 cls.__localtion 實(shí)際上相當(dāng)于Animal.__localtion。
查看全部 -
通過(guò)定義實(shí)例方法來(lái)操作私有屬性的這種方法是推薦的,這種數(shù)據(jù)封裝的形式除了能保護(hù)內(nèi)部數(shù)據(jù)一致性外,還可以簡(jiǎn)化外部調(diào)用的難度。
查看全部 -
在外部訪問(wèn)私有屬性將會(huì)拋出異常,提示沒(méi)有這個(gè)屬性。
雖然私有屬性無(wú)法從外部訪問(wèn),但是,從類的內(nèi)部是可以訪問(wèn)的。私有屬性是為了保護(hù)類或?qū)嵗龑傩圆槐煌獠课廴径O(shè)計(jì)的。查看全部 -
在定義 Person 類時(shí),可以為Person類添加一個(gè)特殊的__init__()方法,當(dāng)創(chuàng)建實(shí)例時(shí),__init__()方法被自動(dòng)調(diào)用,我們就能在此為每個(gè)實(shí)例都統(tǒng)一加上以下屬性
查看全部
舉報(bào)