首页
学习
活动
专区
圈层
工具
发布

Python类中super()和__init__()的关系

Python类中super()和__init__()的关系1.单继承时super()和__init__()实现的功能是类似的class Base(object): def __init__(self...object'>)-------------------------------------------------------------------------------------------super和父类没有关联...super()方法可以看出,super()的第一个参数可以是继承链中任意一个类的名字,如果是本身就会依次继承下一个类;如果是继承链里之前的类便会无限递归下去;如果是继承链里之后的类便会忽略继承链汇总本身和传入类之间的类...__init__()RuntimeError: maximum recursion depth exceeded while calling a Python object4. super()避免重复调用如果...childA基础Base, childB继承childA和Base,如果childB需要调用Base的__init__()方法时,就会导致__init__()被执行两次:class Base(object

1K10

python类中super()和__init__()的区别

目录[-] 单继承时super()和init()实现的功能是类似的 class Base(object): def __init__(self): print 'Base create...class '__main__.childA'>, , , ) supder和父类没有关联...super()方法可以看出,super()的第一个参数可以是继承链中任意一个类的名字, 如果是本身就会依次继承下一个类; 如果是继承链里之前的类便会无限递归下去; 如果是继承链里之后的类便会忽略继承链汇总本身和传入类之间的类...__init__() RuntimeError: maximum recursion depth exceeded while calling a Python object super()可以避免重复调用...如果childA基础Base, childB继承childA和Base,如果childB需要调用Base的init()方法时,就会导致init()被执行两次: class Base(object):

1.2K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python super().__init__和Base.__init__的区别

    我们在使用python中的类继承时,子类继承父类后,在重载父类的方法后,在方法中如果要执行父类对应的方法,一般有两种方式:super和Base(表示父类名)。...(type, obj),这是我们常用的方式 在上面的例子中我们看到super和Base的方式一样,接下来我们再看一个例子 # -*- coding: utf-8 -*- class Base:...__init__中Device1和Device2都调用了初始化方法,是这个原因吗?准确点来讲,是的,可不可以只调用一个,那么Base就只会被调用一次喽,如果只调用Device1....__init__和func是一样的,这绝不是我们所希望的类函数。那么为什么super会正确的找到要执行的函数呢?...总结 通过上面的分析,我们知道在类继承中,一定要使用super的方式才能正确调用类继承关系,在python3中推荐使用super().

    2.6K30

    PYTHON 中的__init__()方

    在类定义时,self和__init__会时常用到。 self 参数,它在所有的方法声明中都存在。...__init__: 在Python 中,__init__()实际上不是一个构造器。你没有调用“new”来创建一个新对象。(Python 根本就没有“new”关键字)。...取而代之,Python 创建实例后,在实例化过程中,调用__init__()方法,当一个类被实例化时,就可以定义额外的行为,比如,设定初始值或者运行一些初步诊断代码 ———主要是在实例被创建后,实例化调用返回这个实例之前...一旦对象创建了,Python 检查是否实现了 __init__()方法。...__init__()设置名字和电话号码。我们的子类在构造器后面几 行还设置了另外两个实例属性:员工ID 和E-mail 地址。 核心笔记:命名类、属性和方法 类名通常由大写字母打头。

    80610

    详解Python中的__init__和__new__的区别

    使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__ 方法通常用在初始化一个类实例的时候。例如: ? 这样便是__init__最普通的用法了。...__new__方法接受的参数虽然也是和__init__一样,但__init__是在类实例创建之后调用,而 __new__方法正是创建这个类实例的方法。 ? 执行结果: ?...然后利用这个实例来调用类的__init__方法,上一步里面__new__产生的实例也就是 __init__里面的的 self 所以,__init__ 和 __new__ 最主要的区别在于: 1....其实我最早接触__new__的时候,就是因为需要自定义 metaclass,但鉴于篇幅原因,我们下次再来讲python中的metaclass和__new__的关系。...可以看到obj1和obj2是同一个实例。

    2.3K10

    Python中 __init__的通俗解释

    前言 作为典型的面向对象的语言,Python中 类 的定义和使用是不可或缺的一部分知识。对于有面向对象的经验、对类和实例的概念已经足够清晰的人,学习Python的这套定义规则不过是语法的迁移。...以创建一个“学生”类为例,最简单的语句是 class Student(): pass 当然,这样定义的类没有包含任何预定义的数据和功能。...答案就是在类内部定义一个__init__函数。这时,Student的定义将变成(我们先用一段注释占着__init__函数内的位置)。 ?...所以__init__函数的参数列表会在开头多出一项,它永远指代新建的那个实例对象,Python语法要求这个参数必须要有,而名称随意,习惯上就命为self。...scores = [score1, score2, score3](少了self.), 则只是在函数内部创建了一个scores变量,它在函数执行完就会消失,对新建的实例没有任何影响; 与此对应,self的属性名和函数内其他名称

    1.3K20

    Python面向对象编程-类和对象__init__和__del__方法

    在Python中,__init__和__del__是类的两个特殊方法,它们分别在对象实例化和销毁时调用。本文将介绍这两个方法的定义、用途和如何使用它们。...__init__方法__init__方法是类的构造函数,在对象实例化时被调用。它用于初始化对象的属性,以及执行必要的设置和验证。该方法可以带有参数,这些参数用于设置对象的初始状态。...以下是一个使用__init__方法的示例:class MyClass: def __init__(self, x, y): self.x = x self.y = yobj...= MyClass(3, 5)print(obj.x, obj.y) # 输出: 3 5在上面的示例中,我们定义了一个名为MyClass的类,并在其__init__方法中初始化x和y属性。...我们可以通过MyClass来创建一个对象实例,并将其初始状态设置为x=3和y=5。我们可以通过对象实例的属性来访问和修改这些属性。__init__方法的主要用途是初始化对象的状态。

    58920

    说说Python中的__new__和__init__的区别?

    如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。 废话不多说,开始今天的题目: 问:说说Python中的__new__和__init__的区别?...答:在Python中__new__和__init__具有不同的功能。并且对于Python的新类和旧类而言功能也不同。...下文来源于: https://www.jianshu.com/p/14b8ebf93b73 Python的新类和旧类 Python中的类分为新类和旧类。...Python旧类中的__new__和__init__ Python的旧类中实际上并没有__new__方法。因为旧类中的__init__实际上起构造器的作用。...Python新类中的__new__和__init__ Python的新类允许用户重载__new__和__init__方法,且这两个方法具有不同的作用。__new__作为构造器,起创建一个类实例的作用。

    94330

    Python学习的自我理解和想法(4)

    今天是学Python的第四天,学的内容是列表。 1.列表入门 自我理解:列表是一种可变序列类型,可以一次性保存多个数据,可以存储任意类型的元素,包括数字、字符串、对象等。...(3).索引和切片 列表支持索引和切片操作,这使得可以方便地访问和修改列表中的部分元素。索引从 0 开始,可以使用正索引或负索引来访问列表中的元素。...切片操作可以返回列表的一个子列表,通过指定起始索引、结束索引和步长来实现。 (4).内置方法丰富 Python 为列表提供了丰富的内置方法,使得可以方便地对列表进行操作。...在实际编程中,列表可以应用于数据存储和处理、函数参数和返回值、动态数组、数据结构的实现等多个场景。通过深入理解和掌握列表的关键要点,可以更加高效地使用这一数据结构,提高编程效率和代码质量。...这是我今天学Python的自我想法和对其的理解,有不对的地方请同志们多多包涵,谢谢观看!

    16800

    Python学习的自我理解和想法(3)

    今天是学Python的第三天,学的内容依然是字符串。...注:本例和下例在一起 2.字符串的分割 语法:str.silpt(字符),(默认是空格) 自我理解:拆分字符串. 3.字符串的合并 语法:a.join(b) [a=用什么连接,b连接的字符串] 自我理解...() 自我理解:对于一些分不清1和 l 等问题的输入法的绝妙检查办法. (4).检测字符串中的字母开头是否全都是大写 语法:str.istitle() 自我理解:对于一大段文章检查的绝妙检查办法. (5...%f 表示小数 (4).%.2f (表示保留2位小数,保留的小数的位数可以自己控制) 自我理解:和前面的 a=f"{a}" 差不多....总结 这是我今天学Python的自我想法和对其的理解,有不对的地方请同志们多多包涵,谢谢观看!

    9600

    Python学习的自我理解和想法(7)

    今天是学Python的第七天,学的内容是集合。开学了,时间不多,写得不多,见谅。 1.集合入门 语法:{ } 自我理解:是一种非常有用的数据结构,它具有一些独特的特性和功能。...在这篇博客中,我们将深入探讨 Python 中的集合,包括其定义、特点、操作以及实际应用场景,并突出关键要点。...自我理解:感觉和列表一样,不是很难理解. 7.集合计算 (1).并集(Union) 使用|运算符或union()方法可以计算两个集合的并集,即包含两个集合中所有元素的集合。...总结 Python 中的集合是一种强大而独特的数据结构,具有无序性、唯一性和可变性质。它提供了丰富的操作方法,包括添加和删除元素、集合运算、遍历等。...通过深入理解和掌握集合的特点和操作,我们可以在 Python 编程中更加高效地处理数据集合,解决各种实际问题。 这是我今天学Python的自我想法和对其的理解,有不对的地方请同志们多多包涵,谢谢观看!

    11200
    领券