The following code successfully prints OK
:
class B(object):
def __init__(self):
super(B, self).__init__()
print 'OK'
class A(object):
def __init__(self):
self.B()
B = B
A()
but the following which should work just as same as above one raises NameError: global name 'B' is not defined
class A(object):
def __init__(self):
self.B()
class B(object):
def __init__(self):
super(B, self).__init__()
print 'OK'
A()
why?
B
is available in the scope of A
class - use A.B
:
class A(object):
def __init__(self):
self.B()
class B(object):
def __init__(self):
super(A.B, self).__init__()
print 'OK'
A()
See documentation on Python Scopes and Namespaces.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With