Python筆記 魔法方法

2021-10-16 09:16:48 字數 1731 閱讀 1525

"""

1.不需要手動呼叫,會在合適的時機自動呼叫

2.這些方法都是以__開始,以__結束

3.方法名都是系統規定的,在合適的時機自己呼叫

"""class

person

(object):

def__init__

(self,name,age)

:#在建立物件時會自動呼叫這個方法

print

('__init__方法被呼叫了'

) self.name = name

self.age = age

def__del__

(self)

:#當物件被銷毀時會自動呼叫這個方法

print

('__del__方法被呼叫了'

)def

__repr__

(self)

:return

'hello'

def__str__

(self)

:return

'姓名:{},年齡:{}.formate(self.name,self.age)'

p = person(

'zhangsan',18

)#如果不做任何的修改,直接列印乙個物件,是檔案的__name__型別 記憶體位址

print

(p)

結果

__init__方法被呼叫了

姓名:,年齡:

.formate(self.name,self.age)

__del__方法被呼叫了

process finished with exit code 0

運算子相關的魔法方法

class

person

(object):

def__init__

(self,name,age)

: self.name = name

self.age = age

#呼叫__new__方法申請記憶體空間

p1 = person(

'zhangsan',18

)#呼叫__new__方法申請記憶體空間

p2 = person(

'zhangsan',18

)"""p1和p2不是同乙個物件,但儲存的資料相同"""

print

('0x%x'%id

(p1)

)#比較的是記憶體位址

print

('0x%x'%id

(p2)

)"""is身份運算子,可以用來判斷兩個物件是否是同乙個物件"""

print

(p1 is p2)

"""is比較兩個物件的記憶體位址

==比較物件的值 會呼叫__eq__方法 num1.__eq__(num2)

"""num1 =[1

,2,3

]num2 =[1

,2,3

]print

(num1 is num2)

print

(num1 == num2)

結果

0xcbdcf0

0x15bedf0

false

false

true

process finished with exit code 0

Python魔法方法 基本的魔法方法

new cls 1.new 是在乙個物件例項化時候所呼叫的第乙個方法 2.他的第乙個引數是這個類,其他的引數是用來直接傳遞給 init 方法 3.new 決定是否使用該 init 方法,因為.new 可以直接呼叫其他類的構造方法,或者返回別的例項物件來作為本類的例項,如果 new 沒有返回例項物件,...

python 魔法方法

魔法方法具有一定的特徵 new cls class capstr str def new cls,string 修改新類裡的new方法,需傳入乙個引數 string string.upper return str.new cls,string 用父類裡的new方法進行返回,直接飯後構造後的物件def...

python魔法方法

python魔術方法是特殊方法的暱稱。它是簡單而又強大,為了被python直譯器呼叫而存在的方法。python提供豐富的元物件協議,讓語言的使用者和核心開發者擁有並使用同樣的工具 例子引用 流暢的python 一摞python風格的紙牌 import collections namedtuple用來...