处理类(嵌套等)在Python中看起来并不容易,令人惊讶!最近出现了以下问题,尝试了几个小时(尝试、搜索...),但都没有成功。我阅读了大多数相关链接,但没有一个指出了这里提出的问题!
#------------------------------------ class A: def __init__(self): self.a ='a' print self.a在代码中问题出在哪里? 并且 在两种情况下,似乎初始化B(A)时未初始化A()。解决这个问题的方法是什么?请注意,B()的
class B(A): def __init__(self): self.b ='b' A.a ='a_b' print self.b,A.a #------------------------------------ class C: class A: def __init__(self): self.a ='a' print self.a
class B(A): def __init__(self): self.b ='b' A.a ='a_b' print self.b,A.a #------------------------------------ #------------------------------------ >>> c1 = A() a >>> c1.a 'a' >>> c2 = B() b >>> c2.a,c2.b ('a_b','b') >>> c3 = C() >>> c4 = c3.A() a >>> c4.a 'a' >>> c5 = c3.B() b a_b >>> c5.b 'b' >>> c5.a Traceback(most recent call last): File“”,line 1, in AttributeError:B instance has no attribute 'a'
__init__()
内调用A.__init__()
不起作用!
更新:
class Geometry: class Curve: def __init__(self,c = 1): self.c = c #曲率参数 print'Curvature%g'%self.c pass #一些代码C = g.Curve(0.5) L = g.Line()
class Line(Curve): def __init__(self): Geometry.Curve.__init__(self,0)#关键点 pass #一些代码
g = Geometry()
这将结果输出:
曲率 0.5 曲率 0
这正是我要寻找的内容。
B.__init__()
中调用A.__init__()
是什么样子的? - soulcheckimport geometry as g``c = g.Curve(0.5)
l = g.Line()
- Duncan