假设我在common.py中有两个python类:
common.py
class A:
def func1:
...
def func2:
class B:
def func1:
....
def func2
if volatile == 1:
commonObj = A()
else:
commonObj = B()
现在有一组模块,可以说:
user1.py, user2.py,...
使用commonObj
,如下所示:
from common import commonObj
commonObj.func1()
commonObj.func2()
所有这些模块构成一个服务器,该服务器作为一个进程连续运行。
我想问一下我将如何实现:
假设有一种方法可以随时更改变量volatile
的值,用户模块即user1.py,...等现在都应该访问commonObj
中的更新值,而不必重新启动服务器。
答案 0 :(得分:0)
我不建议在user*.py
模块中更改代码,
class A:
def func1:
...
class B:
def func1:
...
class Common:
def func1:
if volatile == 1:
return A.func1(self)
else:
return B.func1(self)
...
commonObj = Common()
更改volatile
的值将影响将执行func1
的内容而无需重新启动服务器。
答案 1 :(得分:0)
我认为您解决问题的方法是错误的。您需要一些动态行为并尝试以静态方式实现。让我们假设您可以通过某种方式更改HttpMessageHandlerSpec
变量的值。您的MessageSource
文件永远不会从更改volatile
的值中获得任何好处,因为它只会从该obj调用一次方法。
另一方面,如果您有一些可以重复运行的代码(如函数),并且像这样使用user.py
commonObj
您可以像这样动态获得commonObj
common.py
def some_function():
commonObj.func1()
commonObj.func1()
现在使用它来使您成为user.py中的对象
commonObj