2016-08-04 117 views
-1

我尝试了不少时间里,却没有得到以下的代码工作如何嵌套类和继承类

预先感谢任何帮助/建议

class A(object): 
    def __init__(self,x,y,z): 
     self.c=C(x,y,z) 
    def getxyz(self): 
     return self.c.getxyz() 

    class B(object): 
     def __init__(self,x,y): 
      self.x=x 
      self.y=y 
     def getxy(self): 
      return self.x, self.y 
    class C(B): 
     def __init__(self,x,y,z): 
      super(C,self).__init__(x,y) 
      #self.x,self.y=x,y 
      self.z=z 
     def getxyz(self): 
      (x,y)=self.getxy() 
      return x,y,self.z 
a=A(1,2,3) 
a.getxyz() 
+2

你为什么要这样做? –

+0

我不知道为什么会降低票数,并投票选出一个相关的问题。然而,OP可能会增加他得到的错误。 – jsbueno

回答

2

我又不是100%肯定,为什么你嵌套类(很少是你真正想做的事),但行

self.c = C(x,y,z) 

几乎可以肯定是这里的问题。除非我不明白你想要完成的是什么(这很可能是),你应该可以做

class A(object): 

    def __init__(self, x, y, z): 
     self.c = self.C(x,y,z) 

    def getxyz(self): 
     return self.c.getxyz() 

    class B(object): 

     def __init__(self, x, y): 
      self.x = x 
      self.y = y 

     def getxy(self): 
      return self.x, self.y 

    class C(B): 

     def __init__(self, x, y, z): 
      super(A.C, self).__init__(x,y) 
      self.z = z 

     def getxyz(self): 
      (x,y) = self.getxy() 
      return x, y, self.z 
+0

“self.c”修复是正确的 - 然而,空的“super()”调用仅仅是Python3 - 问题可能是使用Python2 - 所以'super'必须有参数,而OP代码会中断 - 它应该是'super(AC,self).__ init __(x,y)' – jsbueno

+0

(我确实修复了这个错误,现在代码会运行) – jsbueno

+0

@georgeandrew:请注意, m不是100%确定你为什么要嵌套类“是答案的正确性的一部分:-)然而,这段代码将工作。 – jsbueno