如何从其他模块中的另一类方法中修改特定类实例



我希望有一种直接作用于另一类特定实例的类方法。如果两个类都是在同一模块中定义和实例化的,我可以实现这一目标,但是当我尝试将类导入第二个模块时,它会崩溃。

这是一个测试代码段,显示我的问题:

# Module 1
class Foo:
    def __init__(self):
        self.value = 1
    def get_value(self):
        return self.value
    def increase_value(self):
        self.value += 1

class Bar:
    def read_foo(self):
        foo_value = foo.get_value()
        #Do something with Foo_value
        return foo_value

然后,在另一个模块中,这些类别的实例是用与类方法匹配的严格名称创建的。

# Module 2
import test
foo = test.Foo()
bar = test.Bar()
print(bar.read_foo())

现在,当运行模块2时,它返回未定义的foo'错误,因为未在模块1中创建foo。如何解决此问题?

编辑:我的第一个评论中提到的我的解决方案是将foo作为参数传递给类方法read_foo,如:

class Bar:
    def read_foo(self, foo):
        foo_value = foo.get_value()
        #Do something with Foo_value
        return foo_value

弱者模块可能具有您想要的东西 - 它使您可以引用将指向它的对象。另一个选项,如果该库功能对您不完美,就是仅通过其内存位置访问对象(由Hex(ID(object(((。

最新更新