物件導向
python是動態語言,可以給物件動態新增屬性和方法。
魔法方法
__str__ 物件的字串形式,print函式列印物件時,物件的__str__函式被呼叫,其返還的內容被列印。
私有屬性和私有方法
以__開頭,在類外部不能直接使用
__del__ 方法
物件被釋放(引用計數為0)時python直譯器自動呼叫
sys.getrefcount(a)獲取物件的引用計數,得到的值比實際值大1,因為函式中引數也指向了傳入的物件。
在子類中呼叫同名的父類中的方法,animal.func(self)
或者super().func()
子類不能訪問父類的私有屬性和私有方法
多繼承時需要注意方法的搜尋順序
__mro__可以顯示該順序
類本身也是乙個物件。
類屬性所有物件共用乙個,例項屬性屬於單獨乙個物件
類屬性類似c++中的靜態屬性
通過類名訪問
類方法、靜態方法、例項方法
類方法前加@classmethod,引數cls代表對應的類。
呼叫時通過類名訪問,也可以用例項物件呼叫。
靜態方法前加@staticmethod,他可以沒有引數。
通過類名呼叫,或者例項物件呼叫。
__new__(cls) 方法
建立物件,未定義則由object的__new__建立。如果重寫,則需要在重寫的__new__中呼叫object的__new__方法,並將物件引用返回。
單例模式,可以通過重寫__new__和__init__實現,並且使用類屬性儲存例項物件。
class dog(object):
'''單例類-dog'''
#儲存例項物件
__instance = none
#標識是否初始化
__init_flag = false
#重寫該方法,注意引數,與呼叫時保持一致,name一般用不到,但是要寫上
def __new__(cls, name):
#如果未建立物件,則呼叫object的__new__方法建立並儲存
#否則直接返回之前建立的例項物件
if cls.__instance == none:
cls.__instance = object.__new__(cls)
returncls.__instance
def __init__(self, name):
#保證只初始化一次
if not dog.__init_flag:
dog.__init_flag = true
self.name= name
if __name__ == '__main__':
a= dog('旺財')
print(id(a))
print(a.name)
b= dog('阿黃')
print(id(b))
print(b.name)
python基礎班筆記6
continue 用來跳過當次迴圈 break 可以用來立即退出迴圈語句,包括else語句 序列 sequence 基本概念 序列是python中最基本的一種資料結構。序列用於儲存一組有序的資料,所有的資料在序列當中都有乙個唯一的位置 索引 並且序列中的資料會按照新增的順序來分配索引 資料結構指計算...
Python學習筆記6 語法基礎
我的 a int input if a 90 print 優秀 if 80 a 90 print 良 if 70 a 80 print 中 if 60 a 70 print 平 if a 60 print 我沒你這學生 59 我沒你這學生 老師的 輸入成績,需要用到input函式 input輸入的值...
python筆記6 函式基礎2
接收乙個或多個函式作為輸入 return返回另乙個函式 def add x,y,f return f x f y def get abs n return int str n strip print add 5,10,get abs def calc n print n n int n 2 if n...