一、继承
在现实生活中,继承一般指的是子女继承父辈的财产。那么在程序中,继承描述的是事物之间的所属关系,例如猫和狗都属于动物,程序中可以描述为猫和狗都继承自动物。同理,波斯猫和家猫都继承自猫。而斑点狗,泰迪都继承之狗。程序中当我们定义一个class的时候,可以从某个现有的class继承,新的class称之为子类(Subclass),而被继承的class称之为基类、父类或超类。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。
eg:
# 继承
class eg(): #父类
def __init__(self,name,food):
self.name = name
self.food = food
def eat(self):
print('%s喜欢吃%s'%(self.name,self.food))
class eg1(eg): #子类
def __init__(self,name,food,drink):
self.drink = drink
#加载父类构造方法
#eg.__init__(self,name,food)
super(eg1, self).__init__(name,food)
def drinks(self):
print('%s喜欢喝%s'%(self.name,self.drink))
if __name__ == '__main__':
a = eg1('哈士奇','骨头','可乐')
a.eat()
a.drinks()
还可以继承多个父类:如果继承的父类中有相同的方法名,而在子类中使用时未指定,python将从左至右查找父类中是否包含方法。
eg:
# 多继承
class A():
def a(self):
print('这是A里面的a方法')
class B():
def b(self):
print('这是B里面的b方法')
class C():
def c(self):
print('这是C里面的c方法')
class D():
def d(self):
print('这是D里面的d方法')
class E(A,B,C,D): #继承ABCD四个父类的方法
def e(self):
print('这是E里面的e方法')
f=E()
f.a()
f.b()
f.c()
f.d()
f.e()
二、重写
继承了父类中的方法后,在子类中也可以重写在父类中继承的方法。
eg:
# 重写
class eg(): #父类
def __init__(self,name,food):
self.name = name
self.food = food
def eat(self):
print('%s喜欢吃%s'%(self.name,self.food))
class eg1(eg): #子类
def __init__(self,name,food,drink):
self.drink = drink
#加载父类构造方法
#eg.__init__(self,name,food)
super(eg1, self).__init__(name,food)
def drinks(self): #重写方法
print('%s喜欢喝%s'%(self.name,self.drink))
def eat(self):
print('重写方法')
if __name__ == '__main__':
a = eg1('哈士奇','骨头','可乐')
a.eat()
a.drinks()