>>> class S(object):
... def __init__(self):
... self.x = 1
... def x(self):
... return self.x
...
>>> s = S()
>>> s.x
1
>>> s.x()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
爲什麼在這個例子中是s.x
的一個方法,但也是一個整數?在我看來,self.x = 1
應該在實例化過程中替換屬性x
的def x(self):
聲明。爲什麼我可以得到和調用,分別導致一個整數和一個方法,相同的屬性?我的猜測是,新風格類中的變量查找模式是duck typed,以便將最相關的結果返回給調用者。我很想聽聽整個故事。蟒蛇 - 奇怪的行爲問題
啊,謝謝。我不知道爲什麼我在深夜嘗試哲學。它從來沒有完全正確。我處於@decorator的框架中,只看到了'self self.x'作爲最終被調用的東西。而且,我甚至不知道是什麼讓我覺得這樣做,而不是讓事情變得更糟:) – orokusaki 2010-09-06 03:55:35