Python类的继承

这篇具有很好参考价值的文章主要介绍了Python类的继承。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、类的继承

众所周知,Python是面向对象编程。而面向对象编程主要好处之一便是代码的重用。Python实现代码重用的方法之一是通过继承。

继承是类和类之间的一种关系,是一种子类和父类的关系。如子类继承父类,而Python类中重要的两个东西便是属性和方法。那么Python的子类是如何继承父类的属性和方法?是选择性继承还是不可更改?下面我们将一一展开说明。Python中有单继承和多继承,单继承即子类继承于一个父类,多继承即子类继承多个类。本文主要介绍常见的单继承。

a.继承父类的方法

首先,我们先看一段代码例子。

class Foo:
    def f1(self):
        print('Foo.f1')
    def f2(self):
        print('Foo.f2')
        self.f1()

class H(Foo): # 继承父类Foo
    pass

h = H()
h.f1() # Foo.f1

class Bar(Foo): # 继承父类Foo
    def f1(self):
        print('Bar.f1')

b = Bar()
b.f1() # Bar.f1

这个代码就生动的展示了子类如何继承父类的方法。通常情况下当有了继承关系,子类在查找方法时,先从自己的本身类中寻找方法,如果找到了,就直接调用(如代码中的Bar类);如果找不到该方法就到父类寻找该方法(如代码中的H)。也可以这样理解,当有了继承关系后,子类就直接把父类的方法复制下来了,子类可以重写父类的方法。

既然子类可以重新写父类的方法,那么父类有没有一种方法能够不让子类覆盖自己的方法。Python中提供了双下划线开头的方式将方法设置为私有。

python继承父类的属性和方法,Python基础,python,开发语言,爬虫

下面,看一个有意思的例子。我们知道了子类先在自身找方法f2,找不到了再去父类找方法f2。但如果出现了找到的父类方法f2中调用了被子类重写的方法f1,这时是调用父类本身的方法f1还是子类的方法f1呢(有点绕,看下面的代码就容易理解了)。答案是调用子类重写的方法f1。

其实比较有意思的是如果把父类中的方法f1注释掉,即下面代码中Foo类的f1函数注释掉,下面代码运行结果还是和未注释是一样的。

class Foo:
    def f1(self):
        print('Foo.f1')
    def f2(self):
        print('Foo.f2')
        self.f1()

class Bar(Foo):
    def f1(self):
        print('Bar.f1')

b = Bar()
b.f2() # Foo.f2, Bar.f1

class Foo:
    def f2(self):
        print('Foo.f2')
        self.f1()

class Bar(Foo):
    def f1(self):
        print('Bar.f1')

b = Bar()
b.f2() # Foo.f2, Bar.f1

好了,如果上述代码的父类Foo中的f1变成私有方法了。那么,这时子类Bar能不能重写f1呢。答案是不能的(加了双下划线的方法是不能从外部调用的)。

class Foo:
    def __f1(self):
        print('Foo.f1')
    def f2(self):
        print('Foo.f2')
        self.__f1()

class Bar(Foo):
    def __f1(self):
        print('Bar.f1')

b = Bar()
b.f2() # Foo.f2, Foo.f1
b.__f1() # 报错

b.继承父类的属性

上述代码中的类都没有写属性。那么子类继承父类的属性是啥都不用写就可以直接使用吗?答案是是的。

python继承父类的属性和方法,Python基础,python,开发语言,爬虫

那么,如果子类重写了 __init__ 时,就不会调用父类已经定义的 __init__

python继承父类的属性和方法,Python基础,python,开发语言,爬虫

那么有一种情况就是子类想要继承父类的属性(也就是父类的__init__该咋办呢)。可以使用super关键字:

python继承父类的属性和方法,Python基础,python,开发语言,爬虫

这里是直接把父类的整个__init__都搬过来了。文章来源地址https://www.toymoban.com/news/detail-822492.html

到了这里,关于Python类的继承的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++】 为什么多继承子类重写的父类的虚函数地址不同?『 多态调用汇编剖析』

    👀 樊梓慕: 个人主页  🎥 个人专栏: 《C语言》 《数据结构》 《蓝桥杯试题》 《LeetCode刷题笔记》 《实训项目》 《C++》 《Linux》《算法》 🌝 每一个不曾起舞的日子,都是对生命的辜负 本篇文章主要是为了解答有关多态的那篇文章那块的一个奇怪现象,大家还记得这张

    2024年02月19日
    浏览(38)
  • Python类的继承

    一、类的继承 众所周知,Python是面向对象编程。而面向对象编程主要好处之一便是代码的重用。Python实现代码重用的方法之一是通过继承。 继承是类和类之间的一种关系,是一种子类和父类的关系。如子类继承父类,而Python类中重要的两个东西便是属性和方法。那么Python的

    2024年01月25日
    浏览(35)
  • [Python] 类的继承

    在编程中,类的好处我们知道了,通过类我们可以源源不断的实例化出对象,这些对象用有相同的属性和方法,大大提高了程序代码的复用性。 在某些情况下,如果想要创建一个新的类,这个类除了要有旧类的所有属性和方法,还有一些其他的属性和方法,那么重新再去定义

    2024年02月15日
    浏览(33)
  • JAVA中,继承父类和重写父类方法有什么区别?

    在Java中,继承和重写都是面向对象编程的重要概念,但它们有着完全不同的作用: 继承:继承是对象之间的一种关系,子类(派生类)会继承父类(基类)的属性(成员变量)和方法。这使得你可以使用父类的代码,并添加或改变类的行为,以适应新的需求。继承主要是为

    2024年02月10日
    浏览(54)
  • Python趣味入门14:类的继承

    小牛叔带你轻松飞越Python类的门槛 继承最好的示例竟然是病毒复制。类似于COVID-19病毒全球肆虐,病毒复制变异的过程就是下一代继承上一代部分特性,并发展出新特性的过程(如下图)。 病毒的变异来源于DNA(RNA)蛋白质突变 因此编程中的继承,也具有如下两个特征: 复制

    2024年02月03日
    浏览(38)
  • Python中类的继承细讲

      在编写类时,并不是每次都要从空白开始。当要编写的类和另一个已经存在的类之间 存在一定的继承关系 时,就可以 通过继承来达到代码重用 的目的,提高开发效率。下面将介绍如何在 Python 中实现 继承 。    继承 是 面向对象编程最重要的特性之一 ,它源于人们认

    2024年02月06日
    浏览(37)
  • 【iOS开发】理解OC的类,父类,元类的关系

    在OC中,有对象objc,有类Class,有父类SuperClass,其实还有一种元类MetaClass。在接下来的RunLoop,消息转发机制的学习之前需要知道OC类和对象的底层,所以理解类, 父类,元类的关系是基础 在 Objective-C 中,类是对象的模板或蓝图,而对象则是类的实例。每个对象都有一个类作

    2024年02月03日
    浏览(46)
  • java子类继承父类方法、或者接口中方法的javadoc注释

    详情可以阅读: https://docs.oracle.com/en/java/javase/19/docs/specs/javadoc/doc-comment-spec.html#method-comment-inheritance 子类继承父类、或者子类实现接口,在子类中为了避免重复写注释,可以在子类方法注释的主要描述部分、或者@return、@param、@throws标记后面的文本参数部分插入{@inheritDoc}标记

    2024年02月11日
    浏览(43)
  • Python 中多态性的示例和类的继承多态性

    单词 \\\"多态\\\" 意味着 \\\"多种形式\\\",在编程中,它指的是具有相同名称的方法/函数/操作符,可以在许多不同的对象或类上执行。 一个示例是 Python 中的 len() 函数,它可以用于不同的对象。 对于字符串,len() 返回字符的数量: 示例 对于元组,len() 返回元组中项的数量: 示例 对

    2024年02月08日
    浏览(33)
  • 【Chia开发文档】Offer 类的属性、使用方法、作用及返回值

    格式如下 使用方法: Offer.xxx 作用:aaa 第 1 个 offer 文件的返回值: yyy 第 2 个 offer 文件的返回值: zzz Offer.additions() 作用:调用不受信任的输入 注:未来可能被移除出 full_node  Offer.arbitrage() 作用:返回交易中涉及的每种资产的类型和金额的字典,金额是他们在报价中提供的

    2024年01月18日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包