【问题标题】:Imported class doesn't know local variables导入的类不知道局部变量
【发布时间】:2020-07-10 08:44:07
【问题描述】:

我有两个文件(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

Backupfile2.py 如下:

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

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

【问题讨论】:

标签: python class variables import


【解决方案1】:

类 klasse 不知道变量 obj 因为它不在同一个范围内。本地范围的变量不与类中的变量共享。一种简单的解决方案是使用 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 的初学者课程。

【讨论】:

    【解决方案2】:

    我不确定答案,因为我不是专家,因为我不明白你想做什么,但我认为你错过了“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)
    

    然后你的班级“klasse”应该是

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

    我希望它会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-05
      • 2019-06-21
      • 2022-07-02
      • 1970-01-01
      • 2011-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多