如何包含一个对象并在类中调用它的方法?

时间:2016-08-18 10:58:21

标签: python

我有两个类(ClassAClassB),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显示时遇到了问题:

我该如何解决?

2 个答案:

答案 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()