在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ 請(qǐng)問為什么在Python中查看一個(gè)類里定義的多個(gè)方法id時(shí)是相同的?

請(qǐng)問為什么在Python中查看一個(gè)類里定義的多個(gè)方法id時(shí)是相同的?

Myclass類中定義了__init__、name、add三個(gè)方法,實(shí)例化對(duì)象為c1,查看三個(gè)方法的id時(shí)發(fā)現(xiàn)竟然是相同的,請(qǐng)問這是為什么?
class Myclass(object):

def __init__(self, x):
    self.x = x

def name(self):
    print self.x

def add(self):
    self.x+'world'
    print self.x

 

c1 = Myclass('hello')

print id(c1)
print id(c1.__init__)
print id(c1.name)
print id(c1.add)

輸出為:
44030704
43882136
43882136
43882136

回答
編輯回答
失魂人

這是因?yàn)?Python 會(huì)重用同一內(nèi)存地址。在你指向完 id(c1.__init__) 后,c1.__init__ 不再被引用,就會(huì)被回收,接著執(zhí)行 id(c1.name) 時(shí) c1.name 就重用了剛才 c1.__init__ 使用的內(nèi)存地址,下面的 c1.add 同理。

在 Python 文檔關(guān)于 id() 函數(shù)的介紹里有這么一句:

Two objects with non-overlapping lifetimes may have the same id() value

意思就是 2 個(gè)生命周期不重疊的對(duì)象,是可能擁有相同的 id 的

2017年1月5日 15:12