Python學習 物件導向 魔術方法

2021-10-08 02:24:29 字數 2405 閱讀 2316

init__和__new

#魔術方法

class

person()

:'''

初始化魔術方法

觸發時機:初始化物件時觸發(不是例項化觸發,但是和例項化在乙個操作中)

'''def__init__

(self)

:#self.name =name

print

('===init===='

)def

__new__

(cls,

*args,

**kwargs)

:'''

例項化魔術方法

觸發時機: 在例項化對時觸發

'''print

('===new==='

) position =

object

.__new__(cls)

print

(position)

return position

p = person(

)print

(p)

==

=new==

=<__main__.person object at 0x00000248720d31c8

>

===init==

==<__main__.person object at 0x00000248720d31c8

>

new__方法的作用是申請記憶體開闢空間

流程是:

1、person()進行到__new__進行申請空間,position就是新空間,然後返回給__init

2、__init__接收到__new__返回的新空間positon,進行初始化。

3、p =person()接受到__init__執行完畢的位址,p =position。

物件呼叫方法,

觸發時機:將物件當成函式使用的時候,會預設呼叫此函式的內容。

#魔術方法

class

person()

:'''

初始化魔術方法

觸發時機:初始化物件時觸發(不是例項化觸發,但是和例項化在乙個操作中)

'''def__init__

(self,name)

: self.name =name

print

('===init===='

)def

__new__

(cls,

*args,

**kwargs)

:'''

例項化魔術方法

觸發時機: 在例項化對時觸發

'''print

('===new==='

) position =

object

.__new__(cls)

print

(position)

return position

def__call__

(self, name)

:print

('===call==='

)print

('將物件當作函式呼叫時:'

,name)

p = person(

'jack'

)print

(p.name)

p('hello'

)#將物件作函式呼叫。

輸出:將物件當作函式呼叫時: hello
#__del__魔術方法

#觸發時機:列印物件名 自動觸發去呼叫__str__裡面的內容

#注意:一定要在__str__方法中新增return,return後面的內容就是列印物件所看到的內容

class

person()

:def

__init__

(self,name,age)

: self.name = name

self.age = age

#def __del__(self):

# print('===del====')

def__str__

(self)

:return

'姓名是:'

+ self.name +

', 年齡:'

+str

(self.age)

p = person(

'jack',18

)print

(p)

總結:

init(構造方法,建立完空間之後呼叫的第乙個方法);

__str__列印更多的資訊。

物件導向魔術方法

特別的方法 在特定的時機,完成自動呼叫的一些物件方法 construct 例項化過程中 初始化物件操作 destruct 物件被銷毀的過程中,釋放物件棧占用的額外資源 收尾性工作 clone 轉殖物件,重新初始化一下轉殖出來的新物件 tostring 物件轉換為字串 set get unset ca...

python魔術方法call php魔術方法

call是魔術方法中的乙個,當程式呼叫到當前類中未宣告或沒許可權呼叫的方法時,就會呼叫 call方法 class test public function emptyfunc getargs func get args funcname getargs 0 params array slice ge...

PHP物件導向 魔術方法

get name 觸發時機 當呼叫乙個不訪問的成員屬性的時候,會自動觸發,可以利用這個方法來完成對不可呼叫的屬性進行呼叫,但是不能設定值 set name,value 觸發時機 當給乙個不可訪問的成員屬性賦值的時候,會自動觸發這個方法,可以利用這個方法完成對不可以訪問的屬性進行賦值 isset na...