Python类(4)类的继承
类的继承格式
class 子类(基类):
pass
基类(父类): 被继承者(先辈)
子类:继承者(后辈)
如果没有基类,就用object
比如,我们前面几节课的内容,都是直接继承自object这个基类的.理论上,所有的类都是object的子类
可以用base属性查看子类的父类
查看子类的父类
class 子类(object):
pass
print(子类.__base__)
输出:
在这里插入图片描述
查看子类的父类的第二个示例
class 子类(object):
pass
class 孙子类(子类):
pass
print(孙子类.__base__)
输出:
在这里插入图片描述
除了这样的单继承之外,还可以多继承
多继承写法:
class 子类(父类,母类):
pass
这里只是举了个例子,有两个父类,也可以是三个,四个,五个
这里不再举例了,有兴趣的同学可以自行尝试
继承了什么
继承的目的有2个:
- 继往
- 开来
继往:就是原来有的,我都有
开来:就是原来没有的,我也可以有
继承的基本使用:
class A(object):
def __init__(self):
self.name = "张三"
def move(self):
print("我可以移动")
def swim(self):
print("游泳我也会哦")
class B(A):
def __init__(self):
super().__init__()
self.age = 10
def jump(self):
print("我还可以跳")
def move(self):
print("我的移动是飞哦")
b = B()
print(b.name)
print(b.age)
b.move()
b.jump()
b.swim()
在这里插入图片描述
代码分析:
A:是基类
B:是子类
A有一个实例属性name, 两个实例方法move(), swim()
B继承自A,自建了一个实例属性age, 一个实例方法jump(),改写了move()方法
从效果图可以看出来
b有name属性, 有age属笥
b的jump(),swim()方法
但是move()方法与A中自的那个move()方法是不一样的.这个过程称为重写(重载)
总结
- 子类继承父类时,父类可以有一个或多个
- 子类继承父类时,会把父类的实例属性,实例方法都继承过来
- 子类如果对父类的行为(方法)不习惯,可以选择改良(重写)
- 子类如果有构造函数,父类的构造函数将不会被自动调用,需要手动调用super().init()
- 如果子类有多个父类,在使用super().init()方法调用父类的构造函数时,会按照父类的顺序调用第一个有构造函数的父类的构造函数.
- 子类可以对父类没有想到的东西加以添加(子类可以新增属性,方法)