iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python类的继承和方法重写总结
  • 396
分享到

Python类的继承和方法重写总结

重写方法Python 2023-01-31 05:01:57 396人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

python类的继承和方法重写总结  我们都知道类可以继承,通过继承可以实现代码的复用,使代码看起来更加简洁 比如:Class B(A): Pass 定义了一个名为B的类,它继承于A,我们把B叫做A的子类,A叫做B的超类(父类)。 方法重写

python类的继承和方法重写总结

 

 

我们都知道类可以继承,通过继承可以实现代码的复用,使代码看起来更加简洁

 

比如:

Class B(A):
Pass

 

定义了一个名为B的类,它继承于A,我们把B叫做A的子类,A叫做B的超类(父类)。

 

方法重写

当子类定义了一个和超类相同名字的方法时,那么子类的这个方法将覆盖超类相同的方法(或称为重写)

 

先借用两个例子:

>>> class Bird:
...     def __init__(self):
...         self.hungry = True
...     def eat(self):
...         if self.hungry:
...             print 'Aaaah...'
...             self.hungry = False
...         else:
...             print 'No,thanks!'
...
>>> b = Bird()
>>> dir(b)
>>> b.eat()
Aaaah...
>>> b.eat()
No,thanks!
>>>

这个类定义了鸟的基本功能:吃

 

再定义一个类,SongBird是Bird的子类,SongBird会唱歌

>>> class SongBird(Bird):
...     def __init__(self):
...         self.sound = 'Squawk!'
...     def sing(self):
...         print self.sound
...
>>> sb = SongBird()
>>> sb.sing()
Squawk!
>>> sb.eat()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 5, in eat
AttributeError: SongBird instance has no attribute 'hungry'
>>>

 

SongBird是Bird的一个子类,他继承了超类的eat方法,但调用时却报错了,提示没有hungry属性,为什么会这样呢?

 

原因是SongBird的构造方法__init__()重写了,新的构造方法里没有任何关于hungry属性的代码。为了达到预期的效果,SongBird的构造方法必须调用父类的构造方法来确保进行基本的初始化。有两种方法能达到这个目的:调用超类的构造方法的未绑定版本,或者使用super函数。

 

 

调用超类的构造方法的未绑定版本

>>> class SongBird(Bird):
...     def __init__(self):
...         Bird.__init__(self)
...         self.sound = 'Squawk!'
...     def sing(self):
...         print self.sound
...

SongBird类只添加了一行代码Bird.__init__(self)

看下执行结果

 

>>> sb = SongBird()
>>> sb.eat()
Aaaah...
>>>

 

在调用一个实例的方法时,该方法的self参数会被自动绑定到实例上(这称为绑定方法),但如果直接调用类的方法(比如Bird.__init__),就没有实例被绑定,这样的方法称为未绑定方法。

通过将当前的实例作为self参数提供给未绑定方法,SongBird类就能使用其超类构造方法的所有实现。

 

 

Super函数

Super函数只能在新式类使用。当前类和对象可以作为super函数的参数使用,调用函数返回的对象的任何方法都是调用超类的方法,而不是当前类的方法。

那么就可以不用在SongBird的构造方法使用Bird,而直接使用super(SongBird,self)注意是逗号,不是.

除此之外,__init__方法能以一种普通的(绑定)方式被调用

 

>>> __metaclass__ = type
>>> class Bird:
...     def __init__(self):
...         self.hungry = True
...     def eat(self):
...         if self.hungry:
...             print 'Aaaah...'
...             self.hungry = False
...         else:
...             print 'No,thanks!'
...

 

>>> class SongBird(Bird):
...     def __init__(self):
...         super(SongBird,self).__init__()
...         self.sound = 'Squawk!'
...     def sing(self):
...         print self.sound
...
>>> sb = SongBird()
>>> sb.eat()
Aaaah...
>>> sb.eat()
No,thanks!

 


--结束END--

本文标题: Python类的继承和方法重写总结

本文链接: https://www.lsjlt.com/news/188488.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python类的继承和方法重写总结
    Python类的继承和方法重写总结  我们都知道类可以继承,通过继承可以实现代码的复用,使代码看起来更加简洁 比如:Class B(A): Pass 定义了一个名为B的类,它继承于A,我们把B叫做A的子类,A叫做B的超类(父类)。 方法重写...
    99+
    2023-01-31
    重写 方法 Python
  • 详细总结Python类的多继承知识
    目录一、Python不同版本的类二、多继承三、多继承弊端四、Python多继承实现五、多继承的缺点六、Mixin 七、Mixin类一、Python不同版本的类 P...
    99+
    2022-11-12
  • Python类中的单继承和多继承用法
    本篇内容主要讲解“Python类中的单继承和多继承用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python类中的单继承和多继承用法”吧!前言Python面向对象编程语言,有List、Str...
    99+
    2023-06-02
  • JAVA继承、构造方法、重写和重载方法怎么用
    本文小编为大家详细介绍“JAVA继承、构造方法、重写和重载方法怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“JAVA继承、构造方法、重写和重载方法怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。构造方...
    99+
    2023-06-30
  • python—类的属性和方法总结
    一、类的属性总结(类的属性定义在方法外,对象的属性定义在方法内)理解:类的(静态)属性:(人类的五官,理解为变量)类的(动态)方法:(人类吃穿住行,理解为一个函数,至少带一个参数self,指向类本身)对象:类的实例化,之后才能有属性和方法1...
    99+
    2023-01-31
    属性 方法 python
  • Python自定义类继承threading.Thread的方法
    本篇内容介绍了“Python自定义类继承threading.Thread的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!说明使用thre...
    99+
    2023-06-30
  • 内部类在java多重继承的实现方法
    这篇文章给大家分享的是有关内部类在java多重继承的实现方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Java有哪些集合类Java中的集合主要分为四类:1、List列表:有序的,可重复的;2、Queue队列:...
    99+
    2023-06-14
  • python中的类class: 继承、覆盖、重写、重载、扩展、多态、封装
    一、python中的类 使用 class 关键字创建类。类中有方法、属性。 1.1 __init__() 函数 类的内置 __init__() 函数。所有类都有一个名为 __init__() 的函数,它在启动类时执行。 使用 __init_...
    99+
    2023-09-14
    python class类
  • python中子类继承父类的__init__方法实例
    前言 使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__方法在类的一个对象被建立时,马上运行。这个方法可以用来对你的对象做一些你希望的 初始化 。 注意...
    99+
    2022-06-04
    子类 实例 方法
  • Python类的定义继承调用方法有哪些
    这篇文章主要讲解了“Python类的定义继承调用方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python类的定义继承调用方法有哪些”吧!一、类的约束# _开头:&nbs...
    99+
    2023-07-02
  • python内置数据类型使用方法和继承关系
    目录1、python包含的内置序列2、使用内置的数据类型2.1 创建2.2 索引2.3 使用for遍历3、可变与不可变4、小练习题 前言: python之父Guido van Ros...
    99+
    2022-11-13
  • Python类的定义继承调用比较方法技巧
    目录一、类的约束二、类的定义2.1、创建创建2.1.1、类的导入2.1.2、构造器2.1.3、类属性三、类的继承3.1、单继承3.2、多继承3.3、调用父类方法3.4、属性扩展3.4...
    99+
    2022-11-11
  • Python中字符串和列表去重方法总结
    目录字符串去重1、直接遍历字符串的方式2、遍历去重的另一种方式3、将字符串转换成列表的方式(list sort)4、根据字符串下标,判断子集5、使用 ', '.joi...
    99+
    2023-05-15
    Python字符串去重 Python列表去重 Python去重
  • Python重写父类的方法有哪些
    这篇文章主要介绍了Python重写父类的方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python重写父类的方法有哪些文章都会有所收获,下面我们一起来看看吧。1.基础应用class Anim...
    99+
    2023-07-05
  • Java匿名内部类和Lambda(->)的多种写法总结
    引入: 最近使用到 Arrays.sort(); 看了他的重载方法(试着模仿一下) 就以这个玩出了许多的方式;如下:自定义排序 首先 写了个冒泡排序(备用) //给一个inte...
    99+
    2022-11-13
  • Python对list列表结构中的值进行去重的方法总结
    今天遇到一个问题,在同事随意的提示下,用了 itertools.groupby 这个函数。不过这个东西最终还是没用上。 问题就是对一个list中的新闻id进行去重,去重之后要保证顺序不变。 直观方法 最简单...
    99+
    2022-06-04
    结构 方法 列表
  • 总结python实现父类调用两种方法的不同
    python中有两种方法可以调用父类的方法: super(Child, self).method(args) Parent.method(self, args) 我用其中的一种报了如下错误: 找不到 c...
    99+
    2022-06-04
    两种 方法 python
  • Python处理日期和时间的方法总结
    目录1 简单入门1.1 获取当前时间1.2 获取当前日期1.3 datetime中的类2 datetime中的常用的类2.1  date类2.2 time类 2....
    99+
    2022-11-13
  • Python和C/C++交互的几种方法总结
    前言 python作为一门脚本语言,其好处是语法简单,很多东西都已经封装好了,直接拿过来用就行,所以实现同样一个功能,用Python写要比用C/C++代码量会少得多。但是优点也必然也伴随着缺点(这是肯定的,...
    99+
    2022-06-04
    几种方法 Python
  • Python实现将内容写入文件的五种方法总结
    目录一、write()方法二、writelines() 方法三、print() 函数四、使用 csv 模块五、使用 json 模块一、write()方法 使用 write() 方法:...
    99+
    2023-05-17
    Python实现内容写入文件 Python内容写入文件 Python 文件
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作