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知识库 -> python进阶-----十九课(上)--继承 -> 正文阅读

[Python知识库]python进阶-----十九课(上)--继承

python进阶,在第一期的基础上做了极大的优化,整体更加美观易懂
内容较多(该篇幅超过4000字),分为上下两个篇幅,此篇是上

十九、继承 ()

继承:继承是基于面向对象础知识点的,继承有单继承和多继承

19.1、继承作用

继承的作用:节省代码

# 经典类:
class 类名:
    代码

# 新式类:
class 类名(objetc):
    代码

# object是所有类的顶级类(也叫父类、基类),其他的子类都是派生类,一般默认是继承给派生类的
# 定义第一个类: 有属性和方法
class Abc(object):
    def __init__(self):
        self.num = 10

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

# 定义第二个类: 继承第一个类,通过第二个类创建对象,使用对象调用第一个类里面的属性的和方法
class Bcd(Abc):  # 把Abc继承给Bcd,小括号里面(Abc)是父类,Bcd是子类
    pass    # pass 占位符,占个位置让他不报错

duixiang = Bcd()
duixiang.info_print()
# 结果:
>>> 10

19.1.1、单继承

单继承:指的是一个父类继承给一个子类(一对一的继承)

# 定义一个父类
class Master():
    def __init__(self):
        self.fu = "i is you father"

    def tudi(self):
        print(f"{self.fu} = 我是你**")

# 定义一个子类
class Su(Master):  # 继承父类
    pass

# 通过子类创建对象,使用对象去调用方
duxiiang = Su()
print(duxiiang.fu)
# 或者
duxiiang.tudi()
# 结果:
>>> i is you father
>>> i is you father = 我是你**

19.1.2、多继承

多继承(一个子类同时继承多个父类)

# 定义多个父类
class Master(object):
    def __init__(self):
        self.fu = "i is you fathe"
    def zi(self):
        print(f"{self.fu} = 我是你**")


class Fath(object):
    def __init__(self):
        self.back_fatc = "i is two fath"
    def zi_0(self):
        print(f"{self.back_fatc} = 我是你后**")

# 定义一个子类
class Su(Master, Fath):  # 有几个父类加几个父类,(同名情况下)哪一个父类在前子类就优先继承哪一个父类
    pass

# 通过子类创建对象,使用对象去调用方
duxiang = Su()
print(duxiang.fu)
duxiang.zi()

duxiang_0 = Fath()
print(duxiang_0.back_fatc)
duxiang_0.zi_0()
# 结果:
>>> i is you fathe
>>> i is you fathe = 我是你**
>>> i is two fath
>>> i is two fath = 我是你后**

所谓的多继承就是一个子类继承多个父类,是一对多的继承

重写(子类和父类)

# 子类重写父类同名方法和属性
class Fath_1(object):
    def __init__(self):
        self.back_fatc = "张三的拿手手艺"
    def zi_0(self):
        print(f"{self.back_fatc}我学走了")


class Fath_2(object):
    def __init__(self):
        self.back_fatc = "张三徒弟的拿手手艺"
    def zi_0(self):
        print(f"{self.back_fatc}我学会了")


class Su(Fath_1, Fath_2):  # 有几个父类加几个父类,(同名情况下)哪一个父类在前子类就优先继承哪一个父类
    def __init__(self):
        self.back_fatc = "自创的拿手手艺"
    def zi_0(self):
        print(f"{self.back_fatc}我学会了")

wangwu = Su()
print(wangwu.back_fatc)
wangwu.zi_0()
结果:

>>> 自创的拿手手艺
>>> 自创的拿手手艺我学会了
> 1、如果子类和父类有同名的属性和方法,通过子类创建对象去调用到的是子类里面的同名属性和方法
> 2、所谓的重写就是在子类当中去重写父类的同名属性和方法 ```
# 子类调用父类同名方法和属性
class Fath_1(object):
    def __init__(self):
        self.back_fatc = "张三的拿手手艺"
    def zi_0(self):
        print(f"{self.back_fatc}我学走了")


class Fath_2(object):
    def __init__(self):
        self.back_fatc = "张三徒弟的拿手手艺"
    def zi_0(self):
        print(f"{self.back_fatc}我学会了")


class Su(Fath_1, Fath_2):  # 有几个父类加几个父类,(同名情况下)哪一个父类在前子类就优先继承哪一个父类
    def __init__(self):
        self.back_fatc = "自创的拿手手艺"
    def zi_0(self):
        print(f"{self.back_fatc}我学会了")

    def make_fath_1(self):  # 把父类的同名属性和方法再次封装
        # 方法:父类类名.函数名
        Fath_1.__init__(self)
        Fath_1.zi_0(self)
        # print(self)

    def make_fath_2(self):  # 把父类的同名属性和方法再次封装
        # 方法:父类类名.函数名
        Fath_2.__init__(self)  # 如果不加init方法,优先去使用子类中的同名属性
        Fath_1.zi_0(self)  # 如果想要把wangwu这个对象去调用这个同名方法,就需要把对象的引用(self)传入
        # print(self)

wangwu = Su()
print(wangwu.back_fatc)
wangwu.zi_0()
# print(wangwu)
wangwu.make_fath_1()
wangwu.make_fath_2()
# 结果:
>>> 自创的拿手手艺
>>> 自创的拿手手艺我学会了
>>> 张三的拿手手艺我学走了
>>> 张三徒弟的拿手手艺我学走了
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 11:38:17  更:2022-04-26 11:40:11 
 
开发: 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/15 16:37:23-

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