我希望有一种直接作用于另一类特定实例的类方法。如果两个类都是在同一模块中定义和实例化的,我可以实现这一目标,但是当我尝试将类导入第二个模块时,它会崩溃。
。这是一个测试代码段,显示我的问题:
# 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(((。