首页 > 编程语言 >【python】面向对象之继承

【python】面向对象之继承

时间:2024-08-21 21:29:09浏览次数:5  
标签:bar python 继承 class 面向对象 类中 print self def

  • 1.什么是继承?

    • 通过继承,我们可以从既有的类上衍生出新的类。如果程序的需求为仅修改或删除某项功能,此时不需要将该类的成员数据及成员函数重新写一遍,只需要“继承”原先已定义好的类就可以产生新的类了。
    • 继承是指将现有类的属性和行为,经过修改或重写(Override)之后,就可产生出拥有新功能的类,这样可以大幅提升程序代码的可重用性(Reusability)。
      -事实上,继承除了可重复利用之前开发过的类之外,最大的优势在于能够维持对象封装的特性。因为继承时不易改变已经设计完整的类,这样可以减少继承时类设计上的错误发生。
  • 2.基本使用


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

    def say(self):
        print("说话")

    def play(self):
        print("玩耍")

class Study(Person):
    # 子类如果有构造函数,必须先调用父类的构造函数
    def __init__(self,name,age,score):
        super().__init__(name,age)
        self.score = score

    def study(self):
        print("学习")

    def play(self):   # 代码重写,默认不继承父类中的play了
        # super().play()     # 执行父类中的f2方法,推荐使用
        Person.play(self)   # 执行父类中的f2方法,不推荐使用
        print('study.play')


s1 = Study('张三',18,88)
s1.say()
s1.play()
  • 3.多继承
    • python独有特性,java,C#等语言只有单继承

    • Python的类如果继承了多个类,那么其寻找方法的方式有两种,分别是:深度优先和广度优先

    • 当类是经典类时,多继承情况下,会按照深度优先方式查找

    • 当类是新式类时,多继承情况下,会按照广度优先方式查找

    • 经典类和新式类,从字面上可以看出一个老一个新,新的必然包含了跟多的功能,也是之后推荐的写法,从写法上区分的话,如果 当前类或者父类继承了object类,那么该类便是新式类,否则便是经典类。

    • 经典类继承示例

class D:

    def bar(self):
        print 'D.bar'


class C(D):

    def bar(self):
        print 'C.bar'


class B(D):

    def bar(self):
        print 'B.bar'


class A(B, C):

    def bar(self):
        print 'A.bar'

a = A()
# 执行bar方法时
# 首先去A类中查找,如果A类中没有,则继续去B类中找,如果B类中么有,则继续去D类中找,如果D类中么有,则继续去C类中找,如果还是未找到,则报错
# 所以,查找顺序:A --> B --> D --> C
# 在上述查找bar方法的过程中,一旦找到,则寻找过程立即中断,便不会再继续找了
a.bar()
  • 新式类继承示例
class D(object):

    def bar(self):
        print 'D.bar'


class C(D):

    def bar(self):
        print 'C.bar'


class B(D):

    def bar(self):
        print 'B.bar'


class A(B, C):

    def bar(self):
        print 'A.bar'

a = A()
# 执行bar方法时
# 首先去A类中查找,如果A类中没有,则继续去B类中找,如果B类中么有,则继续去C类中找,如果C类中么有,则继续去D类中找,如果还是未找到,则报错
# 所以,查找顺序:A --> B --> C --> D
# 在上述查找bar方法的过程中,一旦找到,则寻找过程立即中断,便不会再继续找了
a.bar()

标签:bar,python,继承,class,面向对象,类中,print,self,def
From: https://www.cnblogs.com/xwltest/p/18372576

相关文章

  • Python 正则表达式详解 带例题演示
    Python正则表达式正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。Python自1.5版本起增加了re模块,它提供Perl风格的正则表达式模式。re模块使Python语言拥有全部的正则表达式功能。compile函数根据一个模式字符串和可选的标志......
  • 【学习笔记】 陈强-机器学习-Python-Ch11 决策树(Decision Tree)
    系列文章目录监督学习:参数方法【学习笔记】陈强-机器学习-Python-Ch4线性回归【学习笔记】陈强-机器学习-Python-Ch5逻辑回归【课后题练习】陈强-机器学习-Python-Ch5逻辑回归(SAheart.csv)【学习笔记】陈强-机器学习-Python-Ch6多项逻辑回归【学习笔记及课后......
  • 【python】面向对象之封装
    一:面向对象编程有三大特性:封装、继承、多态二:其中最重要的一个特性就是封装。封装指的就是把数据与功能都整合到一起三:什么是封装?1.数据角度讲,将一些基础数据类型复合成一个自定义类型2.行为角度讲,向类外提供必要的功能,隐藏实现的细节3.设计角度分而治之将一个......
  • Linux系统下CUDA与tensorflow与python的版本对应关系
    LinuxCPUVersionPythonversionCompilerBuildtoolstensorflow-2.16.13.9-3.12Clang17.0.6Bazel6.5.0tensorflow-2.15.03.9-3.11Clang16.0.0Bazel6.1.0tensorflow-2.14.03.9-3.11Clang16.0.0Bazel6.1.0tensorflow-2.13.03.8-3.11Clang16.0.0Bazel5.3.0tensorflow-2.......
  • Python 异常处理:掌握错误控制的艺术
            在编程的世界里,错误和异常是不可避免的。正确地处理它们是编写健壮、可靠软件的关键。Python提供了一套强大的异常处理机制,允许我们捕获和处理程序运行时出现的错误。在本文中,我们将探讨Python中的异常处理,包括try-except块、自定义异常、finally子句以......
  • Selenium + Python 自动化测试21(PO+HTML+Mail)
            我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。上一篇我们讨论了PO模式并举例说明了基本的思路,今天我们继续学习。        本篇文章我们综合一下之前学习的内容,如先将PO模式和我们生成HTML报告融合起来,综合的灵活的使用之......
  • Python个人收入影响因素模型构建:回归、决策树、梯度提升、岭回归
    全文链接:https://tecdat.cn/?p=37423原文出处:拓端数据部落公众号“你的命运早在出生那一刻起便被决定了。”这样无力的话语,无数次在年轻人的脑海中回响,尤其是在那些因地域差异而面临教育资源匮乏的年轻人中更为普遍。在中国,这种现象尤为明显:没有生在大城市的他们,从小便需面对教育......
  • VSCode配置python项目
    一、项目的目录结构推荐的Python项目目录结构根目录*README.md:项目描述、安装说明和用法*requirements.txt:项目依赖项(freeze<requirements.txt生成;install-r.vscode/requirements.txt安装)*.gitignore:用于版本控制的忽略文件源代码目录*__init__.py:空文件,指示目录......
  • Python处理生信分析流程配置文件4种方法
    在编写生信分析流程时,通常会通过配置文件来定义一些固定的参数,比如软件路径、参考基因组fasta文件路径、基线路径和阈值参数等。1.ini配置文件文件名称:cconfig.iniINI(Initialization)文件是一种简单的配置文件格式,通常由节(section)、键(key)和值(value)组成,是较为常用的配置......
  • python apscheduler定时任务处理
    ApschedulerApscheduler是一个基于Quartz的python定时任务框架,提供了基于日期、固定时间间隔以及corntab类型的任务,并且可持久化任务。安装apscheduler依赖库pipinstallapschedulerAPScheduler组件:schedulers-调度器triggers-触发器jobstores-作业存储器exec......