Initialization of base classes
sorry.antispam at address.net
sorry.antispam at address.net
Mon Mar 18 16:12:46 EST 2002
On pp 74 of Bealey's excellent book "Python Essential Reference, 2nd
Ed" it is written:
"When an instance is created [of a derived class], the __init__()
methods of base classes are not invoked. Thus, it's up to a derived
class to perform the proper initialization of its base classes, if
necessary"
Is this really true? If you have:
class A:
def __init__(self):
print "Class A"
class B:
def __init__(self):
print "Class B"
class C(A):
pass
class D(A, B):
pass
Then:
w = A() --> "Class A"
x = B() --> "Class B"
y = C() --> "Class A"
z = D() --> "Class A"
Hence, instantiating class C does in fact invoke the constructor of
class A, but not of class B. i.e., only the constructor of the first
base class is invoked. Is this a bug in the book, or a bug in Python
2.1?
And if it's not a Python bug, what is the rationale for only calling
the constructor of the first base class, and not the other base
classes?
...Edmund.
More information about the Python-list
mailing list