內置屬性和方法
方法名 | 類型- | 作用 |
---|---|---|
__init__
|
方法 | 類實例化時自動調用這個函數 |
__del__
|
方法 | 對象被內存中銷毀前,會被自動調用 |
__str__
|
方法 | 類的實例打印時調用這個函數(返回)用戶看到的 |
__repr__
|
方法 | 和上面的str函數一樣,只是這個時返回開發者看到的 |
__ getattr __
|
方法 | 當調用不存在的屬性時訪問這個方法 |
__call__
|
方法 | 如果類實現了這個方法,相當于把這個類型的對象當作函數來使用,相當于 重載了括號運算符 |
具體參考Python3標準庫
生命周期
-
一個對象從調用
類名()
開始創建,生命周期開始 -
一個對象
__del__
方法一旦被調用,生命周期結束 - 在對象生命周期內可以訪問,對象屬性,或者讓對象調用方法
例如:
class
Cat
:
def
__init__
(
self
,
name
)
:
self
.
name
=
name
print
(
'他來了 他來了'
)
def
__del__
(
self
)
:
print
(
'他走了 他走了'
)
# Tom 是一個全局變量
tom
=
Cat
(
'Tom'
)
print
(
tom
.
name
)
print
(
'-'
*
50
)
執行如下
他來了 他來了
Tom
--------------------------------------------------
他走了 他走了
現在 我們調用 del 刪除
tom
-
-
omit
-
-
# Tom 是一個全局變量
tom
=
Cat
(
'Tom'
)
print
(
tom
.
name
)
del
tom
print
(
'-'
*
50
)
他來了 他來了
Tom
他走了 他走了
--------------------------------------------------
Class魔法方法
上面的表格以及描述的差不多了,貼一段代碼來例舉
class
Cat
:
# 類實例化時自動調用這個函數
def
__init__
(
self
,
name
)
:
self
.
name
=
name
print
(
'%s他來了 他來了'
%
self
.
name
)
# 對象被內存中銷毀前,會被自動調用
def
__del__
(
self
)
:
print
(
'他走了 他走了'
)
# 類的實例打印時調用這個函數(返回)用戶看到的
def
__str__
(
self
)
:
return
'我是Cat的類'
# 和上面的str函數一樣,只是這個時返回開發者看到的
def
__repr__
(
self
)
:
return
'__repr__'
# 當調用不存在的屬性時訪問這個方法
def
__getattr__
(
self
,
item
)
:
item
=
'A'
print
(
'屬性不存在,默認為 %s'
%
item
)
# 如果類實現了這個方法,相當于把這個類型的對象當作函數來使用,相當于 重載了括號運算符
def
__call__
(
self
,
*
args
,
**
kwargs
)
:
print
(
'我是 %s 通過__call__轉函數實例化的'
%
args
)
# Tom 是一個全局變量
tom
=
Cat
(
'Tom'
)
print
(
tom
.
name
)
# del tom
print
(
'-'
*
50
)
print
(
tom
)
tom
.
sex
print
(
'*'
*
50
)
tom
(
'Tim'
)
懶的同學 看下面 執行結果
Tom他來了 他來了
Tom
--------------------------------------------------
我是Cat的類
屬性不存在,默認為 A
**************************************************
我是 Tim 通過__call__轉函數實例化的
他走了 他走了
__call__
如果沒有定義的話 就
tom('Tim')
就用實例直接調用類的話會保持喲~
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
