2016-12-15 29 views
0

請通過下面的代碼,並解釋我如何,我能實現我所共享的代碼輸出:對象創建和垃圾收集在Python

class Customer: 
    pass 

c1=Customer() 
print(c1) 
print(Customer()) 
print(Customer(),Customer()) 
print(c1,Customer()) 
print(Customer()) 
print(Customer()) 

輸出:

<__main__.Customer object at 0x0172FA90> 
<__main__.Customer object at 0x0172FAB0> 
<__main__.Customer object at 0x0172FAB0> <__main__.Customer object at 0x0172FB10> 
<__main__.Customer object at 0x0172FA90> <__main__.Customer object at 0x0172FAB0> 
<__main__.Customer object at 0x0172FAB0> 
<__main__.Customer object at 0x0172FAB0> 

回答

1

對象的分配恰好使用相同的內存位置,這不是不允許的。

由於您創建的實例因爲沒有引用而立即被收集,因此Python有機會重新使用相同的內存,從而導致它們中的一些具有相同的地址,請參見documentation for the id() function

返回對象的「身份」。這是一個整數,它在其生命週期中保證對這個對象唯一且恆定。 具有非重疊壽命的兩個對象可能具有相同的id()

(重點煤礦)