python属性和变量_Python属性:变量的两个实例?

真的很困惑这里发生了什么。我有一个定义如下的类:class Profile(models.Model):

user = models.OneToOneField(User)

primary_phone = models.CharField(max_length=20)

address = models.ForeignKey(Address)

@property

def primary_email(self): return self.user.email

@primary_email.setter

def primary_email(self, val): self.user.email = val

注意:user有一个属性email。在

现在从命令行开始,我试着:

^{pr2}$

它显示出不同的值?具体来说,u.email的旧值。发生什么事?这怎么可能?我基本上只想为email创建一个别名。在

更多信息:>>> id(u) == id(u.profile.user)

False

>>> u

>>> u.profile.user

它们似乎是user的不同副本,但它们。。。什么?两个都以相同的值开始?在

这样做似乎会带来一些变化:>>> u.profile.primary_email = 'yyy'

>>> u.profile.user.save()

但是u.save()不会成功,因为无论出于什么原因{}。我想这回答了我的问题,但还是有点蹩脚。在

这两个对象在Python中引用同一个对象是可能的,对吧?只是Django的一个有趣的设计决定导致了这一切?在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值