IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 继承 -> 正文阅读

[开发工具]继承

继承

子类默认继承父类所有的属性和方法(私有属性)

在python中所有类默认继承object类,object是顶级类或基类,其他子类叫做派生类

# 经典类和拓展类
"""
class 类名:
    代码

class 类名(object):
    代码
"""



class A(object):
    def __init__(self):
        self.num = 1

    def info_print(self):
        print(self.num)


class B(A):
    pass


b = B()
b.info_print()  # 1
  • 单继承:
class Master(object):
    def __init__(self):
        self.kongfu = ['古法煎饼果子配方']

    def info_print(self):
        print(f'运用{self.kongfu}做了个煎饼果子')
        
class Student(Master):
    pass


ssc = Student()

print(ssc.kongfu)  # ['古法煎饼果子配方']
ssc.info_print()  # 运用['古法煎饼果子配方']做了个煎饼果子
  • 多继承:一个子继承多个父类,默认使用第一个父类的同名方法和同名属性
class Master(object):
    def __init__(self):
        self.kongfu = ['古法煎饼果子配方']

    def info_print(self):
        print(f'运用{self.kongfu}做了个煎饼果子')


class School(object):
    def __init__(self):
        self.kongfu = ['现今煎饼果子配方']

    def info_print(self):
        print(f'运用{self.kongfu}做了个煎饼果子')

# 默认使用第一个父类的方法和属性
class Student(School, Master):
    pass


ssc = Student()

print(ssc.kongfu)  # ['古法煎饼果子配方']
ssc.info_print()  # 运用['古法煎饼果子配方']做了个煎饼果子 
  • 当子类里面对父类同名的方法和属性时调用时优先调用子类自己的方法和属性
class Master(object):
    def __init__(self):
        self.kongfu = ['古法煎饼果子配方']

    def info_print(self):
        print(f'运用{self.kongfu}做了个煎饼果子')


class School(object):
    def __init__(self):
        self.kongfu = ['现今煎饼果子配方']

    def info_print(self):
        print(f'运用{self.kongfu}做了个煎饼果子')


class Student(School, Master):
    def __init__(self):
        self.kongfu = ['自创煎饼果子配方']

    def info_print(self):
        print(f'运用{self.kongfu}做了个煎饼果子')


ssc = Student()

print(ssc.kongfu)  # ['自创煎饼果子配方']
ssc.info_print()  # 运用['自创煎饼果子配方']做了个煎饼果子
  • 子类如何使用父类中的同名方法和属性
class Master(object):
    def __init__(self):
        self.kongfu = ['古法煎饼果子配方']

    def info_print(self):
        print(f'运用{self.kongfu}做了个煎饼果子')


class School(object):
    def __init__(self):
        self.kongfu = ['现今煎饼果子配方']

    def info_print(self):
        print(f'运用{self.kongfu}做了个煎饼果子')


class Student(School, Master):
    def __init__(self):
        self.kongfu = ['自创煎饼果子配方']

    def info_print(self):
        # 加自己初始化,导致属性值是上一次的属性值
        self.__init__(self)
        print(f'运用{self.kongfu}做了个煎饼果子')

    def Master_info_print(self):
        # 先初始化,属性在init的初始化位置,所以需要重新调用
        Master.__init__(self)
        # 父类类名.函数(self)
        Master.info_print(self)

    def School_info_print(self):
        School.__init__(self)
        School.info_print(self)


ssc = Student()

print(ssc.kongfu)  # ['自创煎饼果子配方']
ssc.info_print()  # 运用['自创煎饼果子配方']做了个煎饼果子
ssc.Master_info_print()  # 运用['古法煎饼果子配方']做了个煎饼果子
  • 多层继承
class Master(object):
    def __init__(self):
        self.kongfu = ['古法煎饼果子配方']

    def info_print(self):
        print(f'运用{self.kongfu}做了个煎饼果子')


class School(object):
    def __init__(self):
        self.kongfu = ['现今煎饼果子配方']

    def info_print(self):
        print(f'运用{self.kongfu}做了个煎饼果子')


class Student(School, Master):
    def __init__(self):
        self.kongfu = ['自创煎饼果子配方']

    def info_print(self):
        # 加自己初始化,导致属性值是上一次的属性值
        self.__init__()
        print(f'运用{self.kongfu}做了个煎饼果子')

    def Master_info_print(self):
        # 先初始化,属性在init的初始化位置,所以需要重新调用
        Master.__init__(self)
        # 父类类名.函数(self)
        Master.info_print(self)

    def School_info_print(self):
        School.__init__(self)
        School.info_print(self)


class Tusun(Student):
    pass


ssc = Tusun()

print(ssc.kongfu)  # ['自创煎饼果子配方']
ssc.info_print()  # 运用['自创煎饼果子配方']做了个煎饼果子
ssc.Master_info_print()  # 运用['古法煎饼果子配方']做了个煎饼果子
  • 查看自己的子类继承父类的
print(Student.__mro__)  # (<class '__main__.Student'>, <class '__main__.School'>, <class '__main__.Master'>, <class 'object'>)
  • super()调用父类的方法
class Master(object):
    def __init__(self):
        self.kongfu = ['古法煎饼果子配方']

    def info_print(self):
        print(f'运用{self.kongfu}做了个煎饼果子')


class School(Master):
    def __init__(self):
        self.kongfu = ['现今煎饼果子配方']

    def info_print(self):
        print(f'运用{self.kongfu}做了个煎饼果子')
        # 带参数super()
        # super(School, self).__init__()
        # super(School, self).info_print()

        # 不带参数super()
        super().__init__()
        super().info_print()


class Student(School):
    def __init__(self):
        self.kongfu = ['自创煎饼果子配方']

    def info_print(self):
        # 加自己初始化,导致属性值是上一次的属性值
        self.__init__()
        print(f'运用{self.kongfu}做了个煎饼果子')

    def Master_info_print(self):
        # 带参数super()
        # super(Student, self).__init__()
        # super(Student, self).info_print()

        # 不带参数super()
        super().__init__()
        super().info_print()


ssc = Student()

	ssc.Master_info_print()  # 运用['现今煎饼果子配方']做了个煎饼果子 运用['古法煎饼果子配方']做了个煎饼果子
  • 定义私有属性和方法
在属性和方法前面添加_ _就代表私有属性和方法,不能继承给子类
  • 获取和修改私有属性
# get_xx获取私有属性
# set_xx修改私有属性
# 在父类里面定义方法的形式来获取,get或者set时习惯问题,不是固定的
def get_xx(self):
	return self.__money

def set_xx(self):
	self.__money = 500
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-10-06 12:26:16  更:2021-10-06 12:27:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 0:33:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码