在Python中处理类(嵌套的etc)看起来并不容易,令人惊讶的是!我最近遇到了以下问题,花了几个小时(尝试,搜索…)都没有成功。我阅读了大部分相关链接,但没有一个指向这里提出的问题!#------------------------------------
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
#------------------------------------
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'
代码中的问题在哪里?
和
在这两种情况下,当B(A)初始化时,A()似乎没有初始化。这个问题的解决办法是什么?注意,在B()的__init__()中调用的术语A.__init__()不起作用!
更新:class Geometry:
class Curve:
def __init__(self,c=1):
self.c = c #curvature parameter
print 'Curvature %g'%self.c
pass #some codes
class Line(Curve):
def __init__(self):
Geometry.Curve.__init__(self,0) #the key point
pass #some codes
g = Geometry()
C = g.Curve(0.5)
L = g.Line()
结果是:Curvature 0.5
Curvature 0
我在找的东西。