前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python类继承(调用父类成员与方法)

Python类继承(调用父类成员与方法)

作者头像
里克贝斯
发布于 2021-05-21 08:49:46
发布于 2021-05-21 08:49:46
5.9K0
举报
文章被收录于专栏:图灵技术域图灵技术域

python中类的初始化方法是__init__(),因此父类子类的初始化方法都是这个,如果子类不实现这个函数,初始化时调用父类的初始化函数,如果子类实现这个函数,就覆盖了父类的这个函数,既然继承父类,就要在这个函数里显式调用一下父类的__init__(),这跟C++,jAVA不一样,他们是自动调用父类初始化函数的。

调用父类函数有以下方法:

Python

代码语言:txt
AI代码解释
复制
class Animal():
    def __init__(self, name):
        self.name = name
 
    def saySomething(self):
        print("I am " + self.name)
 
class Dog(Animal):
    def __init__(self, name):
        super().__init__(name)
 
    def saySomething(self):
        print ("I am "+ self.name + ", and I can bark")

1.直接写类名调用: parent_class.parent_attribute(self)

2.用 super(type, obj).method(arg)方法调用:super(child_class, child_object).parent_attribute(arg) 【不需要写self】

3.在类定义中调用本类的父类方法,可以直接 super().parent_method(arg) 【个人推崇这种写法】

样例如下:

Python

代码语言:txt
AI代码解释
复制
class Animal():
    def __init__(self, name):
        self.name = name
 
    def saySomething(self):
        print("I am " + self.name)
 
class Dog(Animal):
    def __init__(self, name):
        super().__init__(name)
 
    def saySomething(self):
        print ("I am "+ self.name + ", and I can bark")
 
    def animal_say_1(self):
        # 子类调用父类的方法
        #  方式1
        super(Dog, self).saySomething()
 
    def animal_say_2(self):
        #  方式2 [推荐]
        super().saySomething()
    
    def animal_say_3(self):
        # 方式3
        Animal.saySomething(self)
 
 
if __name__ == "__main__":
    dog = Dog("Blake")
    dog.saySomething()
    dog.animal_say_1()
    dog.animal_say_2()
    dog.animal_say_3()
    # 子类对象调用被覆盖的父类方法
    super(Dog, dog).saySomething()
 
'''
输出结果如下:
python python_class_inheritance_example.py
I am Blake, and I can bark
I am Blake
I am Blake
I am Blake
I am Blake
'''

如果要调用父类的成员记住在父类中不能是私有变量,及self.__NAME是不能在子类中调用的!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
python调用父类方法的三种方式(super调用和父类名调用)
注意:super()通过子类调用当前父类的方法,super默认会调用第一个父类的方法(适用于单继承的多层继承
Python学习者
2023/05/20
1.3K0
【Python】面向对象 - 继承 ② ( 子类重写父类成员 | 子类调用父类重名成员 | 子类中使用 父类类名 调用父类成员 | 子类中使用 super 调用父类成员 )
子类 继承 父类的 成员属性 与 成员方法 后 , 如果对 继承的 父类成员 不满意 , 可以 重写 父类成员 ;
韩曙亮
2023/10/11
1.1K0
【Python】面向对象 - 继承 ② ( 子类重写父类成员 | 子类调用父类重名成员 | 子类中使用 父类类名 调用父类成员 | 子类中使用 super 调用父类成员 )
python中子类调用父类的初始化方法
http://bestchenwu.iteye.com/blog/1044848
py3study
2020/01/09
2.3K0
【深度学习】 Python 和 NumPy 系列教程(八):Python类(初始化、属性、方法、继承、多态、类变量、静态方法、魔术方法)
Python本身是一种伟大的通用编程语言,在一些流行的库(numpy,scipy,matplotlib)的帮助下,成为了科学计算的强大环境。本系列将介绍Python编程语言和使用Python进行科学计算的方法,主要包含以下内容:
Qomolangma
2024/07/29
1160
【Python】从基础到进阶(六):深入理解Python中的面向对象编程(OOP)
在前几篇文章中,我们已经学习了Python的基础语法、控制流、函数与模块等内容。通过这些知识的学习,您已经具备了一定的Python编程基础。
空白诗
2024/08/29
1560
【Python】从基础到进阶(六):深入理解Python中的面向对象编程(OOP)
利用super解决问题
super() 函数是用于调用父类(超类)的一个方法,目的是用来解决多重继承时父类的查找问题。Python中类的初始化都是init(), 所以父类和子类的初始化方式都是init(), 但是如果子类初始化时没有这个函数,那么他将直接调用父类的init(); 如果子类指定了init(), 就会覆盖父类的初始化函数init()需要在子类中显示地通过super()来调用父类的init()函数。
算法与编程之美
2024/05/10
910
利用super解决问题
Python基础-9 类
类中的概念比较多,初学者掌握面向对象、定义和使用类、单继承、类变量和实例变量即可。迭代器和生成器是Python中迭代利器,推荐掌握。
一只大鸽子
2022/12/06
3810
Python25 面向对象
你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏,你就思考呀,人狗作战,那至少需要2个角色,一个是人, 一个是狗,且人和狗都有不同的技能,比如人拿棍打狗, 狗可以咬人,怎么描述这种不同的角色和他们的功能呢?
py3study
2020/01/09
5570
【Python基础编程】继承、重写与super详解
上篇文章主要了解面向对象中的类和对象、实例属性和实例方法等,接下来继续深入了解python的面向对象,冲冲冲!
易辰君
2024/11/07
1710
Python学习手册之类和继承
在上一篇文章中,我们介绍了 Python 的函数式编程,现在我们介绍 Python 的类和继承。
py3study
2020/01/20
4220
30天拿下Python之面向对象编程
在上一节,我们介绍了Python的函数,包括:函数的定义、函数的调用、参数的传递、lambda函数等内容。在本节中,我们将介绍Python的面向对象编程。面向对象编程(Object-Oriented Programming, 即OOP)是一种编程范型,它以对象为基础,将数据和操作封装在一个类(Class)中。在Python中,类是一种定义对象结构和行为的模板,而对象则是类的实例。类定义了一个新的类型,用于创建具有特定属性和方法的对象。类是面向对象编程的核心,它允许程序员使用对象来组织代码和复用代码。
用户6256742
2024/06/22
940
面向对象语言的三大特征: 封装 继承 多态(二)——继承
子类去重写父类中的方法, 当子类重写了父类中的方法,子类再调用该方法时 调用的是子类重写之后的
诡途
2020/10/16
4120
面向对象语言的三大特征: 封装 继承 多态(二)——继承
python中类(class)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/132732.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/14
5600
python中类(class)
Python 每日一题
题目:Python 中的继承、多态和封装 涉及问题: Python 中如何实现多继承,会有什么问题? Python 中的多态与静态方法有什么区别? 答案要点如下: Python 中的继承,就是在定义
用户7685359
2020/08/24
5390
Python 每日一题
Python自动化开发学习6
假设我们要在我们的程序里表示狗,狗有如下属性:名字、品种、颜色。那么可以先定义一个模板,然后调用这个模板生成各种狗。
py3study
2020/01/08
6960
python开发中重写父类的方法有哪些?
虽然Dog类中有叫唤的方法,假如因为哮天犬是神犬和普通狗狗叫唤方式不一样,所以Dog类中的Dark方法满足不了,这时就要对这个dark方法重写了。
python自学网
2022/09/07
2.6K0
python开发中重写父类的方法有哪些?
玩转Python属性和方法,成为高手不再难!
Python是一种简洁而强大的编程语言,其支持面向对象的编程范式。在Python中,属性和方法是面向对象编程的核心概念之一。本文将从入门到精通介绍Python中的属性和方法,帮助你深入了解这些重要的概念,并学会如何在实际开发中灵活应用它们。
子午Python
2023/07/30
3940
Java开发者的Python快速进修指南:面向对象
当我深入学习了面向对象编程之后,我首先感受到的是代码编写的自由度大幅提升。不同于Java中严格的结构和约束,Python在面向对象的实现中展现出更加灵活和自由的特性。它使用了一些独特的关键字,如self和cls,这些不仅增强了代码的可读性,还提供了对类和实例的明确引用。正如Java,Python也依赖于对象和类的概念,允许我们通过定义类来创建和操作对象。尽管在表面上Python和Java在面向对象的实现上看似相似,但实际上,它们在细节处理上存在一些显著的差异。接下来,我们将探索这些差异,并深入了解它们在实际应用中的具体表现,以便更好地理解面向对象编程在不同语言中的独特风格和优势。
努力的小雨
2024/01/03
4610
Python教程(20)——python面向对象编程基本概念
面向对象(Object-oriented)是一种常用的程序设计思想,它以对象作为程序的基本单元,将数据和操作封装在一起,通过对象之间的交互来实现程序的功能。
一点sir
2024/01/10
1480
Python教程(20)——python面向对象编程基本概念
python语法基础-初始化/继承
写了一些程序,基本上都是直接def函数 然后在main方法中 调用 但是在一些应用程序中 会有基本语法的使用(初始化,继承)
py3study
2020/01/17
8310
推荐阅读
相关推荐
python调用父类方法的三种方式(super调用和父类名调用)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档