類中的內建方法

2022-03-18 19:07:30 字數 2042 閱讀 8237

一、簡單介紹

以上都是對該方法的描述,使用哪一種都可以

類中的每乙個雙下劃線方法都有它自己的特殊意義

二、內建方法類別

一、__call__方法

案例

class a:

def __call__(self, *args, **kwargs):

print('執行call方法')

a = a()

a()a.__call__()

# 也可以直接呼叫call方法

# 物件加括號預設執行__call__方法,也可以直接使用a()()來呼叫

class b:

def __init__(self, cls):

# 可以在例項化a類之前做一些事情

self.a = cls()

# 把乙個類的物件作為另外乙個類的屬性值,就叫組合

# self.a是cls的例項化物件

self.a()

# 呼叫__call__方法

b(a)

二、__len__方法

三、new()構造方法

案例

'''__new__()構造方法'''

class single1:

def __new__(cls, *args, **kwargs):

# 注意:這裡必須加上*args和**kwargs引數,否則__init__傳遞不了引數

print("在object類的__new__方法內")

obj = super().__new__(cls)

# 為物件開闢記憶體空間,傳遞cls,不是

return ('在new方法中', obj)

# 新式類中沒有__new__方法,所以在自定義的類建立自己的__new__方法中呼叫object類的__new__方法

def __init__(self):

print("在single類的__init__方法內")

s = single1()

print(s)

四、str()方法

repr()方法

a = '123'

print(str(a))

print(repr(a))

c = '麗麗'

print(str(c))

print(repr(c))

'''列印結果:123、'123'、麗麗、'麗麗'

'''

特別需要注意的查詢法則:當子類中沒有__str__()時,程式會繼續往上找,如果除了object以外的父類中有則執行父類中的__str__(),

如果除了object以外的父類中都沒有,而子類中有備胎__repr__(),如果子類中沒有__repr__(),則往父類中找__repr__(),如果除了

object類以外的父類中都沒有__repr__(),則最終執行object中的__str__(),返回相應內容。

'''__repr__()'''

class a:

gender = '女'

def __init__(self, name):

self.name = name

def __str__(self):

return self.name

def __repr__(self):

return '*%s*' % self.name

class b(a):

def __init__(self, name, age):

super().__init__(name)

self.age = age

b = b('李志', 20)

print(b)

print(str(b))

print(repr(b))

'''列印結果:李志、李志、*李志*

'''

六、item系列

類的內建方法

前後帶槓槓的都是特殊的內建函式 會在某些時機自動執行 一般情況我們不應該直接呼叫他們 當我們需要自定義列印顯示內容時 就需要實現 str 方法 該方法 必須 返回乙個字串 返回的是什麼 列印出來就是什麼 class test def init self,name self.name name def...

python 類的內建方法

1.doc 列印類的備註 class animal object 建立動物類 def run self 動物都會跑 pass a animal 列印animal類的備註 print a.doc 2.call 將類進行例項化後,呼叫該例項時,會執行 call 方法。注意 類中無 call 方法時,例項...

幾個類的內建方法

類的內建方法 雙下方法 str 當類中定義了 str 方法後,print 這個類物件時 會呼叫 str 或者格式化 s輸出物件時,都會觸發 str repr 當類中定義了 repr 方法後,print repr a 就會呼叫a物件中的 repr 方法。格式化輸出用 r時同樣會呼叫 repr 同樣物件...