继承
继承:描述类与类之间的所属关系
基本语法:
Class 类A():
pass
Class 类B(类A):
pass
称为类B(子类/派生类)继承了类A(父类/基类)
特点:B类的对象可以使用A类的属性和方法
优点:代码复用,不用多次重写
# 1.定义一个动物类 animal类
class Animal(object):
# 2.在animal类书写action方法
def action(self):
print("吃香蕉")
# 3.定义Monkey类继承animal类
class Monkey(Animal):
print('金丝猴')
# 4.调用对象
monkey = Monkey()
monkey .play()
# 金丝猴
# 吃香蕉
单继承和多继承
单继承:如果一个类只有一个父类,把这种关系称为单继承
多继承:如果一个类有多个父类,把这种继承关系称为多继承
# 定义一个动物类 animal类
# object为所有类的父类(上帝)
class Animal(object): # 对于animal类和object类来说,单继承
# 在animal类书写action方法
def action(self):
print("在动物园")
# 定义猴类
class Monkey(Animal):
# 在Monkey中书写eat方法
def eat(self):
print("吃香蕉")
class Wv(Monkey):
print('金丝猴')
wv = Wv()
wv.action() # 调用action类
wv.eat() # 调用eat类
# 金丝猴
# 在动物园
# 吃香蕉
其中 Wv —>Monkey 单继承 Wv —>Monkey —> Animal 多继承
重写
- 重写:子类定义和父类相同的方法
- 原因:父类中的方法,不能满足子类对象的需求,所以重写
- 特点:子类对象调用子类自己的方法,,父类对象调用父类符方法
# 定义Animal类
class Animal(object):
def action(self):
print("在动物园")
# 定义Monkey类,继承Animal类,重写action方法
class Monkey(Animal):
def action(self):
print("森林奔跑")
# 父类自己调用
animal = Animal()
animal .action()
# 子类调用
monkey = Monkey()
monkey.action()
#在动物园
#森林奔跑
子类重写后调用父类方法
# 定义Animal类
class Animal(object):
def action(self):
print("在动物园")
# 定义Monkey类,继承Animal类,重写action方法
class Monkey(Animal):
def action(self):
print("在森林里")
def where(self):
print("保护动物,",end='')
# 方法一:父类名.方法名(self,其他参数)
# Animal.action(self)
# 方法二:super(当前类.self).方法名(参数) 会调用当前父类方法
# super(Monkey,self).action()
# 第三种方法 是方法二的简写,super().方法名(参数) ==>super(当前类,self).方法名()
super().bark()
wv = Monkey()
wv.where()
# 保护动物,在动物园