为什么__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