我正在构建一个模块,其中有很多不同的对象需要由几个变量控制。在
如果这是C语言,我会给对象一个指向我希望它们监视的变量/对象的指针,让应用程序根据需要更改变量,模块中的对象将“看到”新值。在
模块内食品公司名称:
class foo(object):
def __init__(self, varToWatch):
self.varToWatch = varToWatch
def DoSomething(self):
print self.varToWatch
在应用中,棒.py公司名称:
^{pr2}$当然,这不起作用,因为x的原始值(或者对x的原始值的引用?)存储在y中,得到“before”和“before”。在
所以,我试着。。。在
我发现Python没有找到我习惯的那种漂亮的解决方案,所以我怀疑我遗漏了一些东西。在
建议?在
TIA公司, -蒂姆。在
把控制变量放在一个单独的模块中——比如说,
settings
——然后做一个单独的import settings
?然后,您可以让您的对象监视settings.bar
和settings.quux
,同时仍在执行from foo import *
来扰乱主命名空间。;—)也可以使用全局对象来存储设置,效果基本相同。在当然,对于这样的问题,人们一定想知道,从长远来看,重组事物来做一个
import foo
是否没有帮助。。。不过,在不知道问题的情况下无法做出判断,所以我将把这个问题留给你。在要捕获一个名称的所有重新绑定,您需要同时传递一个名称空间和一个特定名称作为其中的键。使用专用的}也可以。在
dict
作为名称空间是可以的,但是对于整个模块(可以作为globals()
)或任何要观察其属性的特定对象o
使用{所以:
对于您的示例,由于您处于全局级别:
^{pr2}$诀窍是使用可变类型。字符串是不可变的,因此当您更改字符串时,它会在新的内存空间中创建一个新的字符串对象。但是,如果引用了一个列表并将其附加到该列表中,则内存空间不会更改。调整你的代码。。。在
相关问题 更多 >
编程相关推荐