无法访问 parent class (python) 中的全局变量
Cannot access global variable inside a parent class (python)
所以我有这段代码(file_1.py中的parentclass:
class do_something():
def __init__(self, day, month, year):
self.day = day
self.month = month
self.year = year
def set_message(self, s):
global var_1_global
self.var_1 = var_1_global
由 child class 继承(在 file_2.py 中),如下所示:
from file_1 import do_something
var_1_global = ""
class child_do_something(...,do_something,..):
...
代码比较大,但是我没法放到Whosebug里。我只放了关键代码。所以我得到的错误是:
NameError: name 'var_1_global ' is not defined
并显示 parent class (file_1.py) 中的行,更具体地说:
self.var_1 = var_1_global
我已经搜索并找到了这个: 这没有帮助。知道我在这里遗漏了什么以及如何解决它吗?
如果 var_1_global
定义在
file_1.py
。此处您的 global var_1_global
语句无效
因为 var_1_global
不在您的全局范围内。既然属于
您必须从 file_2
.
导入另一个文件
但是由于 file_2
已经从 file_1
导入了 do_something
顶层。放这个:
from file_2 import var_1_global
在 file_1
的顶层将导致循环导入。
因此,您必须在方法 set_message
中执行此导入以
避免那个循环问题。因此,一个解决方案是更改:
def set_message(self, s):
global var_1_global
self.var_1 = var_1_global
作者:
def set_message(self, s):
from file_2 import var_1_global
self.var_1 = var_1_global
所以我有这段代码(file_1.py中的parentclass:
class do_something():
def __init__(self, day, month, year):
self.day = day
self.month = month
self.year = year
def set_message(self, s):
global var_1_global
self.var_1 = var_1_global
由 child class 继承(在 file_2.py 中),如下所示:
from file_1 import do_something
var_1_global = ""
class child_do_something(...,do_something,..):
...
代码比较大,但是我没法放到Whosebug里。我只放了关键代码。所以我得到的错误是:
NameError: name 'var_1_global ' is not defined
并显示 parent class (file_1.py) 中的行,更具体地说:
self.var_1 = var_1_global
我已经搜索并找到了这个:
如果 var_1_global
定义在
file_1.py
。此处您的 global var_1_global
语句无效
因为 var_1_global
不在您的全局范围内。既然属于
您必须从 file_2
.
但是由于 file_2
已经从 file_1
导入了 do_something
顶层。放这个:
from file_2 import var_1_global
在 file_1
的顶层将导致循环导入。
因此,您必须在方法 set_message
中执行此导入以
避免那个循环问题。因此,一个解决方案是更改:
def set_message(self, s):
global var_1_global
self.var_1 = var_1_global
作者:
def set_message(self, s):
from file_2 import var_1_global
self.var_1 = var_1_global