lasses aninhadas em Python

Lidar com classes (aninhadas etc) não parece fácil emPitã, surpreendentement! O problema a seguir me apareceu recentemente e levou várias horas (tente, pesquise ...) sem sucesso. Li a maioria dos links relacionados ao SO, mas nenhum deles apontou o problema aqui apresentad

#------------------------------------
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'

Onde está o problema no código? Nos dois casos, parece que quando B (A) é inicializado, A () não é inicializado. Qual é a solução para esse problema? Observe que o termoA.__init__() sendo chamado dentro de B () __init__() não funciona

Updates:

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()

o que resulta em

Curvature 0.5
Curvature 0

o que eu estava procurando.

questionAnswers(2)

yourAnswerToTheQuestion