python基礎筆記 6

2021-08-01 21:42:57 字數 1498 閱讀 4057

物件導向

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...