python双下划线什么意思_python中几个双下划线用法的含义
_ _ init() _ _(self[,...])
我們有時(shí)在類定義寫__init()__方法,但是有時(shí)又沒(méi)有。__init()__方法相當(dāng)于其他面向?qū)ο蟮木幊陶Z(yǔ)言中的構(gòu)造方法,也就是類在實(shí)例化成對(duì)象時(shí)首先會(huì)調(diào)用的一個(gè)方法。當(dāng)我們寫代碼時(shí)需要進(jìn)行初始化的時(shí)候,我們才去寫 _ _ init() _ _方法,沒(méi)有需要時(shí)我們自然不會(huì)去寫入這個(gè)方法。下面我們給出一個(gè)實(shí)例,我們先定義一個(gè)類,擁有計(jì)算面積與周長(zhǎng)兩個(gè)方法,然后需要對(duì)象在初始化擁有長(zhǎng)和寬兩個(gè)參數(shù)
class Test:
def __init__(self, x, y):
self.x = x
self.y = y
def getArea(self):
return self.x * self.y
def grtPeri(self):
return (self.x + self.y) * 2
這里需要注意的是__init()__方法的返回值一定是none,其他就會(huì)報(bào)錯(cuò)。
_ _new _ _(cls[,...])
_ _ new _ _()才是一個(gè)對(duì)象實(shí)例化時(shí)調(diào)用的第一個(gè)方法,它和其他的雙下劃線包圍的方法不同,它的第一個(gè)參數(shù)不是sel而是這個(gè)類(cls),而其他的參數(shù)會(huì)直接傳遞給 _ _ init() _ _ 方法的。
_ _ new _ _()方法需要返回一個(gè)實(shí)例對(duì)象,通常是cls這個(gè)實(shí)例化的對(duì)象,當(dāng)然我們也可以返回給其他的對(duì)象。
_ _ new _ _()方法平時(shí)我們很少去重寫它,一般讓python用默認(rèn)的執(zhí)行方案就行了。但是還會(huì)有情況需要我們?nèi)≈貙戇@個(gè)方法,比如當(dāng)繼承一個(gè)不可變的類型時(shí),它的特性就會(huì)凸顯出來(lái)。
下面給出實(shí)例。
class CapStr(str):
def __new__(cls, string):
string = string.upper()
return str.__new__(cls, string)
這里返回str.new(cls, string)的優(yōu)點(diǎn)在于哪呢,因?yàn)榇藭r(shí)我們只需要注意我們?cè)诖颂幹貙懙牟糠?#xff0c;其他瑣碎的東西可以完全交給python的默認(rèn)機(jī)制就行了,交給它處理可比我們自己寫出錯(cuò)的概率要小得多。
_ _ del _ _(self)
如果說(shuō)前面說(shuō)的兩個(gè)方法是對(duì)象的構(gòu)造器的話,那么python也提供了一個(gè)析構(gòu)器,叫做 _ _ del _ _(self)方法。當(dāng)對(duì)象將要被銷毀的時(shí)候,這個(gè)方法就會(huì)調(diào)用。但是要注意的是,冰粉del x就相當(dāng)于調(diào)用x. _ _ del _ _(), _ _ del _ _()方法是當(dāng)垃圾回收機(jī)制回收這個(gè)對(duì)象時(shí)候調(diào)用的。
舉個(gè)例子
class A:
def __init__(self):
print("方法1被調(diào)用")
def __del__(self):
print("方法2被調(diào)用")
總結(jié)
以上是生活随笔為你收集整理的python双下划线什么意思_python中几个双下划线用法的含义的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 拼多多商家版怎么拍摄视频发送 商家版拍摄
- 下一篇: python tkinter教程 博客园