def test(self):
print "Base2 test..."
>>> class Class1(Base2, Base1):
def __init__(self):
Base1.__init__(self)
Base2.__init__(self)
print "Class1"
>>> a = Class1()
Base1
Base2
Class1
>>> a.test()
Base2 test...
成员
Python Class 同样包含类型和实例两种成员。
>>> class Class1:
i = 123 # Class Field
def __init__(self):
self.i = 12345 # Instance Field
>>> print Class1.i
123
>>> print Class1().i
12345
-----------------------
有几个很 "特殊" 的 "规则" 需要注意。
(1) 我们可以通过实例引用访问类型成员。因此下面的例子中 self.i 实际指向 Class1.i,直到我们为实例新增了一个成员 i。>>> class Class1:
i = 123
def __init__(self):
print self.i
print hex(id(self.i))
>>> hex(id(Class1.i)) # 显示 Class1.i
'0xab57a0'
>>> a = Class1() # 创建 Class1 实例,我们会发现 self.i 实际指向 Class1.i。
123
0xab57a0
>>> Class1.__dict__ # 显示 Class1 成员
{'i': 123, '__module__': '__main__', '__doc__': None, '__init__': }
>>> a.__dict__ # 显示实例成员
{}
>>> a.i = 123456789 # 为实例新增一个成员 i
>>> hex(id(a.i)) # 显示新增实例成员地址
'0xbbb674'
>>> a.__dict__ # 显示实例成员
{'i': 123456789}
(2) 调用类型内部方法,需要省略 self 参数。>>> class Class1:
def __init__(self):
self.__test("Hello, World!")
def __test(self, s):
print s
>>> Class1()
Hello, World!
-----------------------
我们可以在