2016-08-18 67 views
-2

我有两个类(ClassAClassB),并且ClassA包含一个对象b,它是ClassB的一个实例。问题是我不能在Class A中调用b的方法。如何包含对象并在类中调用其方法?

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显示:

我怎样才能解决呢?

回答

3

通过做__classb = classb您只在__init__方法中定义本地__classb变量。

如果你想__classb是一个实例属性,你将需要使用self

self.__classb = classb 

然后:

def show(self): 
    self.__classb.show() 
+0

感谢您的详细信息。有用! – Finnson

1

你应该为B类的类实例的属性像那样的自我.__ 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() 
+0

谢谢!有用! – Finnson

相关问题