-
def __getattribute__(self,name):
??????? print('get')
??????? return self.__dict__[name]
造成無限遞歸:self.__dict__[name]操作為調(diào)用def __getattribute__(self,name)
應(yīng)改為:return super(animal,self).__getattribute__(name)查看全部 -
setattr(self,name,value)
只要對(duì)象的屬性被變動(dòng)就會(huì)調(diào)用改方法
如:a為對(duì)象
a.age=56
該操作會(huì)調(diào)用setattr(),name這里為age這個(gè)屬性,value為56表示將這個(gè)屬性改為56查看全部 -
property:方法后不用()
classmate:通過類名調(diào)用(而不是類的實(shí)例,對(duì)象)查看全部 -
加兩個(gè)__:編譯器把變量改名字查看全部
-
面向?qū)ο?/p>
類和對(duì)象
屬性和方法
繼承
定義類?class
定義屬性和方法
繼承 (object)
magic?method
構(gòu)造函數(shù)?new?del
運(yùn)算符
類的展現(xiàn)
類的屬性訪問?刪除?設(shè)置?查詢(注意無限遞歸)
查看全部 -
設(shè)置對(duì)象屬性
死循環(huán)(超過1000報(bào)錯(cuò)) def?__setattr__(self,name,value): ????setattr(self.name,value) ???? 正確的調(diào)用方法 def?__setattr__(self,name,value): ????self.__dict__[name]?=?value ???? __getattr__(self,name): __getattribute__(self,name):每次調(diào)用都會(huì)執(zhí)行,容易遞歸 __delattr__(self,name)刪除屬性
查看全部 -
Magic?Method
__cmp__(self,other)?所有的比較情況
__eq__(self,other)? 等于
__lt__(self,other)? 小于
__gt__(self,other)? 大于
運(yùn)算
__add__(self,other)?加
__sub__(self,other)?減
__mul__(self,other)?乘
__div__(self,other)?除
邏輯運(yùn)算
__or__(self,other)?或
__and__(self,other)?與
判斷數(shù)據(jù)是否為int類型
if?isinstance(age,int): ????self.age?=?age else: ????raise?Exception('age?must?be?int')
查看全部 -
用python定義類
class?__init__()???#?構(gòu)造函數(shù),將類的屬性進(jìn)行設(shè)置 ????... ????..... ????__del__()????#?析構(gòu)函數(shù),當(dāng)一個(gè)對(duì)象被python回收會(huì)調(diào)用此函數(shù)
兩個(gè)內(nèi)建函數(shù)
dir()? 返回一個(gè)對(duì)象的屬性
type()? 獲取對(duì)象的類型
查看全部 -
看完了查看全部
-
在Python2.x中,
class OldStyle:
? ? ???? pass
和
class NewStyle(object):
?????????pass
是不同的。
但是在Python3.x中,這兩種類定義是相同的。
查看全部 -
兩個(gè)內(nèi)建函數(shù)dir()和type()
dir():返回一個(gè)對(duì)象的屬性;
type():獲取一個(gè)對(duì)象的類型。
查看全部 -
python?a
查看全部 -
python私有屬性的定義方式如下:
查看全部 -
python沒有訪問控制
查看全部 -
python 3 除法已經(jīng)變成__truediv__
查看全部 -
dir返回對(duì)象屬性tape訪問對(duì)象類型查看全部
-
_del_與_init_對(duì)應(yīng)查看全部
-
封裝性繼承雙繼承多態(tài),類里面分為屬性和方法查看全部
-
__setattr__
查看全部
舉報(bào)