I am puzzled with the following error in python 2.7.12
Suppose we have a class definition within a class, something similar to this:

```
class C(object):
    def __init__(self):
        print "class C"

class D(object):
    def __init__(self):
        print "class D"

class A(D):

    class B(C):
        def __init__(self):
            # Strangely here B is "not defined", why?
            super(B, self).__init__()
            print "class B"

    def __init__(self):
        super(D, self).__init__()
        print "class A"

    def do_something(self):
        b_class = self.B()
        print "b_class within A : {}".format(b_class)

a_class = A()
a_class.do_something()

```

but if we we extract the definition of class `B` outside the scope of class `A`,
everything works well. 

Do we need to use "super" differently when called within a nested class? I fail to understand why its usage would be different within or outside the nested class. Any pointers?