继承
一、什么是继承
- 继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类继承了一个类,类中的属性和方法就在子类中了
- 继承的特性是:子类会遗传父类的属性
- 继承是类与类之间的关系
二、为什么要用继承
- 使用继承可以减少代码的冗余
三、对象的继承
1. Python中支持一个类同时继承多个父类
class student:
pass
class class1:
pass
class subject(student,class1):
pass
2.使用__bases__方法查看对象继承的类
print(Sub1.__bases__)
(<class 'main.Parent1'>, <class 'main.Parent2'>)
- 在python3中如果一个类没有继承任何一个类,则默认继承object类
- 在pythjon2中如果一个类没有继承任何类,不会继承object类
print(Parent1.__bases__)
(<class 'main.student'>, <class 'main.class1'>)
四、类的分类
4.1 新式类
- 继承了object的类以及该类的所有子类,都是新式类
- python3中所有的类都是新式类
4.2.经典类
- 没有继承object的类以及该类的子类,都是经典类
- 只有python2中才有经典类
五、继承
5.1多层继承
class D: #D继承object
print('ddd')
class C(D): #c继承D
print('ccc')
class B(C): #B继承c
print('bbb')
class A(B): #A继承B
print('aaa')
5.2多继承
class D: #D继承object
print('ddd')
class C:
print('ccc')
class B:
print('bbb')
class A(B,C,D): #A继承B,C,D
print('aaa')
5.3多继承的多层继承
class G: #G继承object
print('ddd')
class F(G):
print('ccc')
class E(G):
print('bbb')
class D(G):
print('ddd')
class C(F):
print('ccc')
class B(E):
print('bbb')
class A(B,C,D): #A继承B,C,D
print('aaa')
5.4继承与重用性
在开发程序的过程中,如果我们定义了一个类A,然后又想新建立另外一个类B,但是类B的大部分内容与类A的相同时
我们不可能从头开始写一个类B,这就用到了类的继承的概念。
通过继承的方式新建类B,让B继承A,B会‘遗传’A的所有属性(数据属性和函数属性),实现代码重用
#继承的代码实现
class Animal:
def eat(self):
print("%s 吃 " %self.name)
def drink(self):
print ("%s 喝 " %self.name)
def shit(self):
print ("%s 拉 " %self.name)
def pee(self):
print ("%s 撒 " %self.name)
class Cat(Animal):
def __init__(self, name):
self.name = name
self.breed = '猫'
def cry(self):
print('喵喵叫')
class Dog(Animal):
def __init__(self, name):
self.name = name
self.breed='狗'
def cry(self):
print('汪汪叫')
# ######### 执行 #########
c1 = Cat('小白家的小黑猫')
c1.eat()
c2 = Cat('小黑的小白猫')
c2.drink()
d1 = Dog('胖子家的小瘦狗')
d1.eat()
派生
当然子类也可以添加自己的新属性或者在自己这里重新定义属性(不会影响到父类),需要注意的是,一旦重新定义了自己的属性且与父类重名,那么调用新增的属性时,就以自己为准了。