【Python】面向对象 - 继承 ② ( pass 关键字用法 | 多继承优先级 )





一、pass 关键字用法




1、pass 关键字作用


pass 关键字作用 :

pass 是一个空语句 , 表示什么都不做 ,

该语句只起占位符作用 , 用于在编写代码时占一个位置 ,

将来再补充具体的代码实现 ;


2、pass 关键字使用场景


pass 关键字使用场景 :

如果定义一个类 , 只写一个类名 , 其它的成员继承自别的类 ,

类中暂时没有成员要写 , 但是语法要求类下面必须写内容 ,

此时使用 pass 作为类的语句即可 , 保证在编译时 , 语法检查不报错 ;


3、不写函数体和方法体报错


下面的代码中 , 定义一个 Dog 类 , 只是单纯的继承 Animal 和 Walk 两个类 , 但是如果不写类内容 , 编译时报错 :

Indent expected

在这里插入图片描述

同理 , 函数也是 , 我们只定义 函数名称 与 参数列表 , 返回值 , 不想实现函数体 , 也可以使用 pass 关键字 , 如果不写函数内容 , 也会报上述错误 ;

在这里插入图片描述


4、代码示例 - 使用 pass 关键字作为函数体和方法体


使用 pass 关键字完整代码示例 :

"""
pass 关键字 代码示例
"""


class Animal:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def make_sound(self):
        pass


class Walk:
    def walk(self):
        print("走路")


class Dog(Animal, Walk):
    pass


dog = Dog("大黄", 2)
print(dog.name)
print(dog.age)
dog.walk()

执行结果 :

D:\001_Develop\022_Python\Python39\python.exe D:/002_Project/011_Python/HelloPython/Hello.py
大黄
2
走路

Process finished with exit code 0

在这里插入图片描述







二、多继承优先级




1、多继承优先级简介


在 多继承 中 , 如果多个父类 , 有相同名称的成员 , 那么按照 从左到右 的继承顺序作为 优先级 ;

多继承中 , 写在左侧的 父类 优先级高 , 写在右侧的 父类 优先级低 ;

多继承中 , 先写的保留 , 后写的无效 ;


2、代码示例 - 多继承优先级


在下面的代码中 , 两个父类 Animal 和 Walk 中都定义了 walk 成员方法 ;

在 Dog 类中 , 先继承了 Animal , 后继承了 Walk , 那么调用 Dog 实例对象的 walk 方法时 , 执行的是 Animal 的方法 ;

class Dog(Animal, Walk):
    pass

在 Dog2 类中 , 先继承了 Walk , 后继承了 Animal , 那么调用 Dog 实例对象的 walk 方法时 , 执行的是 Walk 的方法 ;

class Dog2(Walk, Animal):
    pass


代码示例 :

"""
pass 关键字 代码示例
"""


class Animal:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def walk(self):
        print("动物走路")


class Walk:
    def walk(self):
        print("走路")


class Dog(Animal, Walk):
    pass


class Dog2(Walk, Animal):
    pass


dog = Dog("大黄", 2)
dog.walk()

dog2 = Dog2("大黄", 2)
dog2.walk()

执行结果 :

D:\001_Develop\022_Python\Python39\python.exe D:/002_Project/011_Python/HelloPython/Hello.py
动物走路
走路

Process finished with exit code 0

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/han1202012/article/details/131632029