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