Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 导入的类不知道局部变量_Python_Class_Variables_Import - Fatal编程技术网

Python 导入的类不知道局部变量

Python 导入的类不知道局部变量,python,class,variables,import,Python,Class,Variables,Import,我有两个文件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 =

我有两个文件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()
现在我想将类klasse从Backupfile2.py导入Backupfile.py,并将2,2添加到列表obj中

备份文件2.py中包含以下内容:

class klasse:
    def __init__(self):
        obj.append((2,2))
        print(obj)

但是,为什么导入变量obj后类klasse不知道它?

类klasse不知道变量obj,因为它不在同一范围内。局部作用域中的变量不会与类中的变量共享。一个简单的解决方案是使用全局关键字,但我不会使用它。我会考虑在方法ARGS中传递OBJ引用,像这样:

课堂材料: 定义初始自我,目标: self.obj=obj 自我功能 自我定义: 从备份文件2导入klasse newclass=klasseself.obj obj=[] 对象附录1,1 printobj mater=Materobj 克拉斯类: 定义初始自我,目标: 对象附录2,2 printobj
除了这个特定的问题,我建议您参加一门Python初学者课程。

我不确定答案,因为我不是专家,也因为我不明白您想做什么,但我认为您错过了klasse类中的obj声明,我认为应该是这样的

class klasse:
def __init__(self):
    self.obj = []
    self.obj.append((2,2))
    print(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)
或者,如果您想使用您所做的obj声明,那么您的代码应该是

class klasse:
def __init__(self):
    self.obj = []
    self.obj.append((2,2))
    print(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:
def __init__(self, obj):
    obj.append((2,2))
    print(obj)

我希望它会有所帮助。

因为obj是备份文件模块中的一个变量,除非您导入它,否则在备份文件2中是不可见的。这是否回答了您的问题?