在Python,如果定義三個類:底層機制Python類成員查找
class A:
name = 'oliver'
hailstone_ending = [4,2,1]
class B:
def __init__(self):
self.name = 'oliver'
self.hailstone_ending = [4,2,1]
class C:
pass
c = C()
c.name = 'oliver'
c.hailstone_ending = [4,2,1]
引擎蓋下,確實成員查找功能中用於每個類別的相同的方式?看起來A
只需要在字典上查找所有實例的成員;另一方面,另一方面,需要使用存儲在這些實例中的每一箇中的字典。如果口譯人員非常聰明,理論上可以注意到B
必須包括name
和hailstone_ending
的;因此,它可能相當於A
。
但另一方面,如果del
操作在查找類成員的字典上被允許,所有這些類中的查找機制可能是等價的,因爲可用成員將依賴於實例。
我的興趣是我有一些代碼創建了幾千個類型爲C
的類,我注意到它很慢並且內存很餓。我最近以不同的方式重寫了它,感覺效率更高(但我沒有嚴格測試它,所以它可能是相同的)。
非常感謝您的洞察力!
不...... A''與'B'非常不同。口譯員很聰明,可以注意到這一點。 – JBernardo