python嵌套类的使用_Python中的嵌套类

在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

我在找的东西。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值