我希望有一个直接作用于另一个类的特定实例的类方法。如果在同一模块中定义和实例化这两个类,我可以实现这一点,但是当我尝试将类导入到第二个模块时它就崩溃了。
以下是显示我的问题的测试代码段:
# 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
答案 0 :(得分:-1)
weakref模块可能具有您正在寻找的内容 - 它允许您引用将指向它的对象。如果库功能不能完美地为您工作,另一个选择就是只通过它的内存位置(由十六进制(id(对象))找到对象。