[英]Imported class doesn't know local variables
我有两个文件(Backupfile.py 和 Backupfile2.py)。
以下是在 Backupfile.py 中:
class Mater:
def __init__(self):
self.func()
def func(self):
from Backupfile2 import klasse
newclass = klasse()
obj =[]
obj.append((1,1))
print(obj)
mater = Mater()
现在我想将 class klasse
从 Backupfile2.py 导入到 Backupfile.py 并将 (2,2) 添加到列表obj
中。
以下是在 Backupfile2.py 中:
class klasse:
def __init__(self):
obj.append((2,2))
print(obj)
但是,为什么 class klasse
不知道变量obj
一旦被导入?
class klasse 不知道变量 obj,因为它不在同一个 scope 中。 本地范围的变量不与 class 中的变量共享。 一种简单的解决方案是使用 global 关键字,但我不会使用它。 我会考虑在方法 args 中传递 obj 引用,如下所示:
class Mater:
def __init__(self, obj):
self.obj = obj
self.func()
def func(self):
from Backupfile2 import klasse
newclass = klasse(self.obj)
obj =[]
obj.append((1,1))
print(obj)
mater = Mater(obj)
class klasse:
def __init__(self, obj):
obj.append((2,2))
print(obj)
除了这个特定的问题,我建议你参加关于 Python 的初学者课程。
我不确定答案,因为我不是专家,因为我不明白你想做什么,但我认为你错过了 class “klasse”中的 obj 声明,我认为应该是就像是
class klasse:
def __init__(self):
self.obj = []
self.obj.append((2,2))
print(obj)
或者如果你想使用你所做的 obj 声明,你的代码应该是这样的
class Mater:
def __init__(self, obj):
self.func(obj)
def func(self, obj):
from Backupfile2 import klasse
newclass = klasse(obj)
obj =[]
obj.append((1,1))
print(obj)
mater = Mater(obj)
然后你的 class "klasse" 应该是
class klasse:
def __init__(self, obj):
obj.append((2,2))
print(obj)
我希望它会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.