In [5]: class a(object):
...: def __init__(self):
...: print "In class a"
...: self.a = 1
...:
In [6]: class b(object):
...: def __init__(self):
...: print "In class b"
...: self.b = 2
...:
...:
In [7]: class c(b, a):
...: pass
...:
In [8]: c.mro()
Out[8]:
[<class '__main__.c'>,
<class '__main__.b'>,
<class '__main__.a'>,
<type 'object'>]
In [9]: obj = c()
In class b
In [10]: obj.__dict__
Out[10]: {'b': 2}
class的默认__init__
方法c
在obj
创建时调用,它在内部调用__init__
唯一的 class b
。
根据我的理解,如果我从 2 个类继承,我的派生类对象应该具有两个类的变量(除非它们是这些类的私有变量)。
我的问题:我期望我的派生对象包含来自两个类的变量是错误的吗?如果是这样,为什么?不应该也调用__init__
class吗?a
在像 C++ 这样的语言中会发生什么?