WHCSRL 技术网

Python——类(类的继承、多层继承、多重继承、定制)

目录

1.类的继承

2.类的多层继承

3.类的多重继承

4.类的定制


1.类的继承

        继承这个词很好理解,比如你继承了亿万家产,什么都没干一夜暴富。类的继承也是如此,子类继承父类,什么都没干就有了父类所有的属性和方法。

  1. class Human:
  2. arms = 2
  3. legs = 2
  4. hair = '各种颜色的头发'
  5. def walk(self):
  6. print('直立行走')
  7. def speak(self):
  8. print('说着各种各样的语言')
  9. class Chinese(Human):
  10. pass #pass是空语句,表示跳过,什么都没有。
  11. Xiaolang = Chinese()
  12. Xiaolang.walk()
  13. print(Xiaolang.arms)

输出:

直立行走
2

2.类的多层继承

        继承不只是子类继承父类的属性的方法,子类也能继承父类的父类的属性和方法。

多层继承格式
class A:
class B(A):
  1. class Human:
  2. arms = 2
  3. legs = 2
  4. hair = '各种颜色的头发'
  5. def walk(self):
  6. print('直立行走')
  7. def speak(self):
  8. print('说着各种各样的语言')
  9. class Chinese(Human):
  10. pass #pass是空语句,表示跳过,什么都没有。
  11. class ShanDong(Chinese):
  12. pass
  13. Xiaolang = ShanDong()
  14. Xiaolang.walk()
  15. print(Xiaolang.arms)

输出:

直立行走
2

3.类的多重继承

        除了继承一个类,还可以同时继承多个类。语法如下:

class 类A(类B, 类C, 类D):

         以出生在中国山东的小浪宝宝为例:

  1. class Chinese:
  2. hair = '黑头发'
  3. skin = '黄皮肤'
  4. def speak(self):
  5. print('说汉语')
  6. class Shandong:
  7. arms = 2
  8. legs = 2
  9. def speak(self):
  10. print('讲山东方言')
  11. class Human(Chinese, Shandong):
  12. pass
  13. Xiaolang = Human()
  14. Xiaolang.speak()
  15. print(Xiaolang.hair)
  16. print(Xiaolang.arms)

输出:

说汉语
黑头发
2

         Human 类继承了 Chinese 类和 ShanDong 类的所有属性和方法,但是两个类都有 speak 的方法,Human 类只继承了 Chinese 的。这是因为class Human(Chinese, ShanDong):中的 Chinese 靠前,调用实例的属性和方法时会优先在子类中查找,找不到再从左到右依次查找继承的父类,直到找到,如果找不到会报错

4.类的定制

        你可能会有疑问,既然子类可以继承父类的所有属性和方法,它俩是一样的,为什么不直接使用父类呢?因为:类除了可以继承以外,还可以定制。在父类的基础上做以下两点定制:

        1.创建新的属性和方法。(新增)

        2.修改继承自父类的属性和方法。(重写)

  1. class Human:
  2. arms = 2
  3. legs = 2
  4. hair = '各种颜色的头发'
  5. def walk(self):
  6. print('直立行走')
  7. def speak(self):
  8. print('说着各式各样的语言')
  9. class Chinese(Human):
  10. hair = '黑头发'
  11. skin = '黄皮肤'
  12. def speak(self):
  13. print('说汉语')
  14. def eat(self):
  15. print('吃馒头')
  16. Xiaolang = Chinese()
  17. print(Xiaolang.arms)
  18. Xiaolang.walk()
  19. Xiaolang.speak()
  20. Xiaolang.eat()

输出:

2
直立行走
说汉语
吃馒头

         Chinese 类在 Human 类的基础上新增了 skin 属性和 eat() 方法,并且 Chinese 类自己的 hair 属性和 speak() 方法覆盖了 Human 类中对应的属性和方法,这就是类的定制的两个特点:新增重写

新增和重写的概念
新增继承父类的属性和方法的基础上添加自己独有的属性或方法
重写在继承父类的属性和方法的基础上重写父类的属性或方法

《Python——类(__init__初始化 、__str__ 方法的使用及面向对象和向过程的区别)》

《Python——类(与实例区别、创建、调用、self的作用)》

加上本文《Pthon——类(类的继承、多层继承、多重继承、定制)》

 在使用类时应特别注意:

        1)定义类的方法时,第一个参数 self 不能丢,调用方法时忽略;

        2)self 作用是代替实例本身,在类种访问类的属性和方法;

        3)初始化方法 __init__() 在类实例化时会自动执行,一般用于类属性的初始化;

        4)子类可以继承父类的所有属性和方法,并且可以定制自己的属性和方法。

推荐阅读