导入类变量蟒蛇
问题描述:
我有两个Python类,一个使用了其他的变量导入类变量蟒蛇
A类:
class A(object):
variable = None
@classmethod
def init_variable(cls):
cls.variable = something
B类:
variable = __import__('module').A.variable
class B(object):
@staticmethod
def method():
return variable
我尽可能简化我的问题,因为可能。所以我的问题是,为什么我仍然有B.method()
返回NoneType
即使我使用init_variable
答
something
更新A.variable
类变量,我改变了你的代码位,所以它会实际上做你想要什么:
your_package/klass_A的.py
class A(object):
variable = None
@classmethod
def init_variable(cls, something):
cls.variable = something
your_package/klass_B.py
from your_package.klass_A import A
class B(object):
@staticmethod
def method():
return A.variable
现在,您实际上可以更新A.variable
并使用B
中的更新变量。例如这样的:
print B.method()
A.init_variable('123')
print B.method()
回报:
None
123
这是两个不同的变量。您可能想了解[Python变量如何工作](https://nedbatchelder.com/text/names.html)。 – user2357112
我认为当你像这样导入模块'A'时,你创建了该模块的一个新实例,而不是导入已经存在的模块。另外,你什么时候更新'A.variable'? – Peter
@彼得,这是我怀疑。实际上,我正在制作一个包,并且'A.variable'需要用户输入,因此我希望'B'类在更新时使用这个变量。 –