-
類的屬性的控制 1.設(shè)置對象屬性 __setattr__(self,name,value) def __setattr__(self,name,value): self.__dict__[name]=value 2.查詢對象屬性 __getattr__(self,name) 當查詢不到時才會調(diào)用 __getattribute__(self,name) 每次訪問時一定會被調(diào)到 3.刪除對象屬性 __delattr__查看全部
-
類的展現(xiàn) 1.轉(zhuǎn)換為字符串 __str__ __repr__ __unicode__ 2.展現(xiàn)對象屬性 __dir__ 可以自定義dir展示想要展示的屬性查看全部
-
類和運算符 1.利用魔術(shù)方法可以使運算符被Python的標準語法支持 2.比較運算符 __cmp__(self,other) 比較 __eq__(self,other) 處理等于 __lt__(self,other) 小于 __gt__(self,other) 大于 3.數(shù)字運算符 __add__(self,other) 加 __sub__(self,other) 減 __mul__(self,other) 乘 __div__(self,other) 除 4.邏輯運算符 __or__(self,other) 或 __and__(self,other) 和查看全部
-
對象的創(chuàng)建和初始化 1. 創(chuàng)建類的對象 def __new__(cls) 平時不需要手動定義,父類會自動完成 2.初始化對象 def __init__(self) 3.回收對象 def __del__()查看全部
-
Magic Method(魔術(shù)方法) 方法名的前后有兩個下劃線 def __init__(self):查看全部
-
類的繼承 1.定義類的繼承 class DerivedClass(BaseClassName): pass 2.繼承的子類 會繼承父類的屬性和方法 也可以自己定義,覆蓋父類的屬性和方法 3.用super()調(diào)用父類的方法 class A(object): def method(self,arg): pass class B(A): def method(self,arg): super(B,self).method(arg)查看全部
-
定義類的方法 1.函數(shù)和方法 函數(shù)是直接用函數(shù)名調(diào)用 方法是類的一部分,需要用實例對象來調(diào)用 2.類的方法也是類的屬性 可以將類的方法名替換成字符串等類型 3.方法的訪問控制與屬性控制類似 4.@classmethod修飾器 調(diào)用的時候用類名,而不是某個對象 5.@property修飾器修飾方法 像訪問屬性一樣調(diào)用方法查看全部
-
定義類的屬性 1.直接在類里定義 class Programer(object): sex='male' 會被所有類的對象使用 2.在構(gòu)造函數(shù)里定義 class Programer(object): def __init__(self,name,age): self.name =name self.age = age 3.訪問的控制 class Programer(object): def __init__(self,name,age): self.name =name ----->可以公開訪問 self._age = age ------>私有屬性,還可被對象訪問 self.__weight = weight ---->不可被類外訪問,可通過實例名._類名__weight訪問 4..__dict__#查看對象屬性的情況 programer=Programer('Albert',25,80) print programer.__dict__ 打印對象屬性發(fā)現(xiàn)是{'_age':25,'_Programer__weight':70,'name':'Albert'}查看全部
-
1.定義類 class NewStyle(object): pass 2.構(gòu)造函數(shù) def __init__(self,...) 3.析構(gòu)函數(shù) def __del__(self,...) 4.類的兩個內(nèi)建函數(shù) dir() 返回一個對象的屬性 type() 獲取對象的類型查看全部
-
__new__ 在__init__之前調(diào)用查看全部
-
python也有析構(gòu)函數(shù)__del__查看全部
-
基本概念:類、對象、屬性、方法、繼承、封裝、多態(tài)查看全部
-
繼承:子類從屬父類。多重繼承:繼承不同維度 多態(tài):不同子類繼承同一父類調(diào)用同一方法,因子類重寫而有不同的反應(yīng)查看全部
-
__str__方法和__init__方法類似,都是一些特殊方法,所以前后都有雙下劃線,它用來返回對象的字符串表達式。查看全部
-
跟對象屬性有關(guān)的魔術(shù)方法 設(shè)置對象屬性 __setattr__(self,name,value) #給對象設(shè)置屬性的時候調(diào)用 def __setattr__(self,name,value): setattr(self,name,value) #會無限遞歸,因為在給 self 設(shè)置屬性的時候,使用內(nèi)建方法 setattr() 會調(diào)用 __setattr__ ,__setattr__ 里面又調(diào)用 setattr() def __setattr__(self,name,value): self.__dict__[name] = value 是正確的 查看對象屬性 __getattr__(self,name) # __getattribute__(self,name) #每次訪問屬性的時候都不會被調(diào)用,包括使用__dict__訪問屬性 他更容易造成無限遞歸的狀況,推薦使用父類調(diào)用魔術(shù)方法的方法 def __getattribute__(self,name): return super(父類名,self).____getattribute__(name) 刪除對象屬性: __delattr__(self,name):查看全部
舉報
0/150
提交
取消