爲什麼__dict__
和例如__unicode__
不能同時調用或反過來?爲什麼不__dict__可以被調用
的Django告訴我設置一個Unicode回報的方法上的型號,例如:
class Obj(models.Model):
def __unicode__(self):
return 'hey'
>>> x = Obj()
<__main__.Obj object at 0x100703e10>
>>> x.__unicode__()
u'hello'
>>> x.__dict__
{}
似乎一個奇怪的差異,任何人都可以向我解釋?
您正在混淆屬性名稱與被調用。這兩個沒有連接。 '.__ unicode__'是一個屬性,它解析爲一個可以調用的方法。 '.__ dict__'是一個屬性,它解析爲一個字典。兩者都使用a *命名約定*,雙名字在名稱信號中強調名稱是保留的,並且具有特殊含義。 – 2013-05-13 15:14:05
我不明白這個問題。 '__unicode__'是一種當你想要一個對象的unicode表示的時候被調用的方法。 '__dict__'是一個包含對象所有成員的屬性。你的問題是什麼? – 2013-05-13 15:14:21
我知道什麼方法和屬性,我想知道爲什麼有一個風格的差異,因此雙下劃線,並不像操作一樣的方法操作一些魔術,而不是簡單地舉行一個字典,我的意思是字典必須進行計算somehwere? – RabbitInAHole 2013-05-13 15:15:33