Python面向对象编程与模块系统详解
1. 面向对象编程基础
在Python中,类和对象是实现面向对象编程的核心。首先来看类的继承和方法解析顺序的问题。
class X(object): pass
class Y(X): pass
# 下面这行代码会引发TypeError
# class Z(X,Y): pass
在上述代码中, class Z(X,Y)
会报错,因为方法解析算法无法确定基类的合理顺序。 X
在继承列表中排在 Y
前面,按顺序应先检查 X
,但 Y
继承自 X
更特殊,若先检查 X
就无法解析 Y
中的特殊方法。不过在实际编程中,这类问题很少出现,若出现往往意味着程序设计存在严重问题。
当派生类定义了与基类同名的属性时,派生类的实例会使用派生类的属性。若要访问原始属性,可使用完全限定名,示例如下:
class D(A):
def method1(self):
print “Class D : method1”
A.method1(self) # 调用基类方法
在类实例的初始化方面,创建实例时不会自动调用基类的 __init__()
方法