python 物件導向 雙下劃線方法

2022-05-11 15:27:46 字數 4298 閱讀 9345

1.__str__和__repe__

class

person(object):

def__init__

(self,name,age):

self.name =name

self.age =age

def__str__

(self):

return

'stf:我叫{},今年{}歲

'.format(self.name,self.age)

def__repr__

(self):

return

'repr:我叫{},今年{}歲

str函式或者print函式呼叫時 = obj.__srt__()

repr函式或者互動式直譯器中呼叫時 = obj.__repr__()

這兩個方法的返回值必須是字串,否則會丟擲異常

class

person(object):

def__init__

(self,name,age):

self.name =name

self.age =age

#def __str__(self):

#return 'stf:我叫{},今年{}歲'.format(self.name,self.age)

def__repr__

(self):

return

'repr:我叫{},今年{}歲

如果__str__沒有被定義,那麼就會使用__repr__來代替輸出。

2.__del__析構方法

class

person(object):

def__init__

(self,name,age):

self.name =name

self.age =age

def__del__

(self):

print('

析構方法')

p = person('

wdc',22)

print('

11111111111')

print('

11111111111')

del p #

刪除物件p

當物件再記憶體中被釋放時,自動觸發執行。

3.__new__方法

class

person(object):

def__init__

(self,name,age):

self.name =name

self.age =age

print

(self.name)

def__new__(cls, *args, **kwargs):

#負責執行__init__,進行一些初始化前的工作

當有__new__方法時,不執行__init__方法,直接執行__new__方法,如果要想知道__init__方法,就要在__new__中返回:object.__new__(cls)

__new__方法實現單例模式:

class

person(object):

tasks =

instance =none

def__init__

(self,name):

self.name =name

defadd_task(self,job):

print('

{}新增任務{},共{}個任務

'.format(self.name,job,len(self.tasks)))

def__new__(cls, *args, **kwargs):

#只有第一次例項化的時候,正常精選,後面每次例項化,並不正在建立乙個新例項

if cls.instance ==none:

#進行正常的例項化,並把例項化後的物件,村再cls.instance中

obj = object.__new__(cls) #

例項化過程

cls.instance = obj #

把例項化好的物件存下來

return cls.instance #

以後的每次例項化,直接返回第一次村的例項物件

4.__call__方法

:在物件後加括號執行 

:獲取物件的全部屬性

:用來找到物件所對應的類

class

wdc(object):

defqqq():

print('

wdc+++++')

one =wdc()

print(one.__class__)

7.__slots__

:限制物件的屬性名。

class person(object

): # 基於person類的物件新增屬性只能新增下面列表中存在的字段

Python單下劃線和雙下劃線

python 用下劃線作為變數字首和字尾指定特殊變數。不能用 from moduleimport 匯入 系統定義名字 類中的私有變數名 核心風格 避免用下劃線作為變數名的開始。因為下劃線對直譯器有特殊的意義,而且是內建識別符號所使用的符號,我們建議程式設計師避免用下 劃線作為變數名的開始。一般來講,...

Python 單下劃線和雙下劃線解析

單下劃線 單下劃線開始的成員變數叫做保護變數,意思是只有類物件和子類物件自己能訪問到這些變數 雙下劃線 開始的是私有成員,意思是只有類物件自己能訪問,連子類物件也不能訪問到這個資料。如下列所示 以單下劃線開頭 foo 的代表不能直接訪問的類屬性,需通過類提供的介面進行訪問,不能用 from impo...

Python中單下劃線和雙下劃線

python中存在一些特殊的方法,有些方法以雙下劃線 開頭和結尾,它們是python的魔法函式,比如 init 和 str 等等。不用要這種方式命名自己的變數或者函式。class a def init self,text self.text text def str self return self...