欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Python中的

new: 對象的創(chuàng )建,是一個(gè)靜態(tài)方法,第一個(gè)參數是cls。(想想也是,不可能是self,對象還沒(méi)創(chuàng )建,哪來(lái)的self)

init : 對象的初始化, 是一個(gè)實(shí)例方法,第一個(gè)參數是self。
call : 對象可call,注意不是類(lèi),是對象。
先有創(chuàng )建,才有初始化。即先__new__,而后__init__。
直接看代碼:

class Bar(object):   pass  class Foo(object):   def __new__(cls, *args, **kwargs):     return Bar()   print Foo() 可以看到,輸出來(lái)是一個(gè)Bar對象。

通俗一點(diǎn)就是,當你實(shí)例化一個(gè)對象的時(shí)候,就會(huì )執行__new__ 方法里面的方法。__new__方法在類(lèi)定義中不是必須寫(xiě)的,如果沒(méi)定義,默認會(huì )調用object.__new__去創(chuàng )建一個(gè)對象。如果定義了,就是override,可以custom創(chuàng )建對象的行為。

class Person(object):  """Silly Person"""   def __init__(self, name, age):    self.name = name    self.age = age   def __str__(self):    return '<Person: %s(%s)>' % (self.name, self.age) if __name__ == '__main__':  piglei = Person('piglei', 24)  print piglei

這樣便是__init__最普通的用法了。但__init__其實(shí)不是實(shí)例化一個(gè)類(lèi)的時(shí)候第一個(gè)被調用 的方法。當使用 Persion(name, age) 這樣的表達式來(lái)實(shí)例化一個(gè)類(lèi)時(shí),最先被調用的方法 其實(shí)是 new 方法。

call 這個(gè)看代碼意會(huì )

#call.py 一個(gè)class被載入的情況下。class Next:  List = []     def __init__(self,low,high) :    for Num in range(low,high) :      self.List.append(Num ** 2)     def __call__(self,Nu):    return self.List[Nu]

如果 這樣使用:

b = Next(1,7)print b.Listprint b(2)
輸出[1, 4, 9, 16, 25, 36]9

但如果這樣使用:

b = Nextb(1,7)print b.Listprint b(2)$python ./call.py[1, 4, 9, 16, 25, 36] Traceback (most recent call last): File "cal.py", line 17, in <module>  print b(2) TypeError: __init__() takes exactly 3 arguments (2 given)

__init__是初始化函數,在生成類(lèi)的實(shí)例時(shí)執行。
而__call__是模擬()的調用,需要在實(shí)例上應用,因此這個(gè)實(shí)例自然是已經(jīng)執行過(guò)__init__了。
你所舉的后面那個(gè)例子:
b = Next
這并不是創(chuàng )建實(shí)例,而是將class賦給一個(gè)變量。因此后面使用b進(jìn)行的操作都是對Next類(lèi)的操作,那么其實(shí)就是:

Next(1,7)print Next.Listprint Next(2)
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Python學(xué)習——面向對象之元類(lèi)
[python] __new__() 和 __init__()的區別
python中\init__ 方法
python使用什么關(guān)鍵字定義類(lèi)
深入理解python之self
盤(pán)點(diǎn)一個(gè)面向對象的類(lèi)變量和實(shí)例變量問(wèn)題
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久