我想将一个对象的属性永久链接到另一个对象的属性,这样每当后者发生更改时,前者都会自动更新。在
我尝试过使用=来使用简单赋值,但这只在赋值时赋值,而我想给属性本身赋值。在
class firstObj:
def __init__(self,n):
self.name=n
self.inA=1
@property
def outA(self):
return self.inA+2
class secondObj:
def __init__(self,n):
self.name=n
self.inA=1
@property
def outA(self):
return self.inA*2
fo=firstObj("FO")
so=secondObj("SO")
fo.inA=so.outA
我试图将so的输出链接到fo的输入
即
在所以,inA=2
-->;所以,奥塔变成4
-->;福伊纳变成4
-->;外景地变成6
(更普遍地说,在python中,是否有一种方法可以将对变量的引用分配给另一个变量,而不是将变量的值赋给另一个变量,这样a=b就不会将b的值赋给a,而是将b的值赋给b本身)
python中的变量只是一个字典映射var name=value,如果您尝试
print(globals())
它将为所有模块变量打印一个字典映射如果您需要实现您想要的,可以在类定义中执行以下操作:
输出:
^{pr2}$在原生Python中,没有直接的支持。但是,您可以使用回调来模拟此功能:
输出:
^{pr2}$基本上,这需要
Asker
的实例将其属性之一绑定到Teller
的一个实例;然后,每当Teller
实例修改该属性时,Asker
实例的相应属性也将更改。在你不能这样做。Python无法让一个名称引用另一个名称,这正是您想要的(您想要的)福伊纳指所以,奥塔). 名称只能引用值。这个演讲有更多细节:Python Names and Values。在
相关问题 更多 >
编程相关推荐