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

目录

1.类的继承

2.类的多层继承

3.类的多重继承

4.类的定制


1.类的继承

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

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

输出:

直立行走
2

2.类的多层继承

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

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

输出:

直立行走
2

3.类的多重继承

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

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

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

class Chinese:
    hair = '黑头发'
    skin = '黄皮肤'
    def speak(self):
        print('说汉语')
class Shandong:
    arms = 2
    legs = 2
    def speak(self):
        print('讲山东方言')
class Human(Chinese, Shandong):
    pass

Xiaolang = Human()
Xiaolang.speak()

print(Xiaolang.hair)
print(Xiaolang.arms)

输出:

说汉语
黑头发
2

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

4.类的定制

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

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

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

class Human:
    arms = 2
    legs = 2
    hair = '各种颜色的头发'
    def walk(self):
        print('直立行走')
    def speak(self):
        print('说着各式各样的语言')
class Chinese(Human):
    hair = '黑头发'
    skin = '黄皮肤'
    def speak(self):
        print('说汉语')
    def eat(self):
        print('吃馒头')

Xiaolang = Chinese()
print(Xiaolang.arms)
Xiaolang.walk()
Xiaolang.speak()
Xiaolang.eat()

输出:

2
直立行走
说汉语
吃馒头

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

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

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

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

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

 在使用类时应特别注意:

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花落指尖❀

您的认可是小浪宝宝最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值