面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。继承完全可以理解成类之间的类型和子类型关系。
需要注意的地方:继承语法 class 派生类名(基类名)://... 基类名写作括号里,基本类是在类定义的时候,在元组之中指明的。
在python中继承中的一些特点:
- 1:在继承中基类的构造(__init__()方法)不会被自动调用,它需要在其派生类的构造中亲自专门调用。
- 2:在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量。区别于在类中调用普通函数时并不需要带上self参数
- 3:Python总是首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找。(先在本类中查找调用的方法,找不到才去基类中找)。
如果在继承元组中列了一个以上的类,那么它就被称作"多重继承" 。
下面看一下代码:
class parent:
attr = 200
def __init__(self,a,b):
self.a=a
self.b=b
print(a+b)
def parentMethod(self,n):
self.n=n
print(parent.attr+n)
class parent2:
def __init__(self,c,d):
self.c=c
self.d=d
print (c-d)
class child(parent,parent2):
def childMethod(self):
print("child omethod")
def childAdd(self,x,y):
self.x=x
self.y=y
print x+y
c=child(4,2)#调用第一个父类构造函数
c.childMethod()#调用子类方法
c.parentMethod(20)#调用父类方法
c.childAdd(9,8)
print (issubclass(child,parent2))#布尔函数判断一个类是另一个类的子类或者子孙类,语法:issubclass(sub,sup)