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

时间:2018-02-25 22:35:54

标签: python python-3.x class import class-method

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

以下是显示我的问题的测试代码段:

# 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运行时,它返回一个未定义的&f; foo'错误,因为foo未在模块1中创建。如何解决此问题?

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

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

1 个答案:

答案 0 :(得分:-1)

weakref模块可能具有您正在寻找的内容 - 它允许您引用将指向它的对象。如果库功能不能完美地为您工作,另一个选择就是只通过它的内存位置(由十六进制(id(对象))找到对象。