2024-04-24 05:11:21 发布
网友
我正在开发一个有文件的简单应用程序常量.py包含所有配置,如下所示
x = y
在程序执行过程中,y的值发生了变化,我希望xo的值也能自动更新,这可以作为绑定引用,我如何实现这一点
如果更改值(对象)本身,则对它的所有引用都将更新:
>>> a = [] >>> b = a # b refers to the same object a is refering right now >>> a.append('foo') >>> print b ['foo']
但是,如果将名称指向其他对象,则其他名称仍将引用之前引用的对象:
这就是python的工作原理。名称只是对对象的引用。可以使名称引用另一个名称引用的同一对象,但不能使名称引用另一个名称。使用=运算符(a = 15)的名称属性会更改a所指的内容,因此它不会影响其他名称。在
=
a = 15
a
在Python中,变量名指向值。x=y告诉Python变量名x应该指向y当前指向的值。在
x=y
x
y
更改y时,变量名y指向新值,而变量名x仍指向旧值。在
使用纯变量名无法实现所需的效果。在
我喜欢KennyTM的建议,将x定义为一个函数,因为它明确指出x的值需要运行一些代码(查找y的值)。在
但是,如果您想维护统一的语法(使所有常量都能以相同的方式访问),那么您可以使用一个带有属性(调用getter和setter函数的属性)的类:
在常量.py公司名称:
class BunchOConstants(object): def __init__(self, **kwds): self.__dict__.update(kwds) @property def x(self): return self.y @x.setter def x(self,val): self.y=val const=BunchOConstants(y=10,z='foo')
你的脚本.py公司名称:
在这里您可以改变“常数”y:
“常数”x也会改变:
print(const.x) # bar
您也可以更改x
const.x='foo'
而且y也发生了变化:
print(const.y) # foo
如果您的配置值在类中,可以执行以下操作:
>>> class A(object): ... a = 4 ... @property ... def b(self): ... return self.a ...
然后,每次访问b时,它都会返回a的值
如果更改值(对象)本身,则对它的所有引用都将更新:
但是,如果将名称指向其他对象,则其他名称仍将引用之前引用的对象:
^{pr2}$这就是python的工作原理。名称只是对对象的引用。可以使名称引用另一个名称引用的同一对象,但不能使名称引用另一个名称。使用
=
运算符(a = 15
)的名称属性会更改a
所指的内容,因此它不会影响其他名称。在在Python中,变量名指向值。
x=y
告诉Python变量名x
应该指向y
当前指向的值。在更改
y
时,变量名y
指向新值,而变量名x
仍指向旧值。在使用纯变量名无法实现所需的效果。在
我喜欢KennyTM的建议,将
x
定义为一个函数,因为它明确指出x
的值需要运行一些代码(查找y的值)。在但是,如果您想维护统一的语法(使所有常量都能以相同的方式访问),那么您可以使用一个带有属性(调用getter和setter函数的属性)的类:
在常量.py公司名称:
你的脚本.py公司名称:
^{pr2}$在这里您可以改变“常数”y:
^{3}$“常数”x也会改变:
您也可以更改
x
而且
y
也发生了变化:如果您的配置值在类中,可以执行以下操作:
然后,每次访问b时,它都会返回a的值
相关问题 更多 >
编程相关推荐