我有两个类(ClassA
和ClassB
),ClassA
包含一个对象b
,它是ClassB
的一个实例。问题是我无法在b
中调用Class A
方法。
class ClassB(object):
def __init__(self):
print('Class B init ...')
def show(self):
print('Showing class b')
class ClassA(object):
#__classb = ClassB()
def __init__(self, classb):
print('Class A init ...')
__classb = classb
def show(self):
__classb.show() # <=== I just want to do this!
b = ClassB()
a = ClassA(b)
a.show()
我希望结果应该是:
Class B init ...
Class A init ...
Showing class b
但我在this image显示时遇到了问题:
我该如何解决?
答案 0 :(得分:3)
通过执行__classb = classb
,您只需在__classb
方法中定义本地__init__
变量。
如果您希望__classb
成为实例属性,则需要使用self
:
self.__classb = classb
然后:
def show(self):
self.__classb.show()
答案 1 :(得分:1)
你应该在类A中为类B的实例创建一个属性,就像那个self .__ classb一样。 以下代码
class ClassB(object):
def __init__(self):
print('Class B init ...')
def show(self):
print('Showing class b')
class ClassA(object):
def __init__(self, classb):
print('Class A init ...')
self.__classb = classb
def show(self):
self.__classb.show() # <=== I just want to do this!
b = ClassB()
a = ClassA(b)
a.show()