首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python __init__和self他们做了什么?

在Python中,__init__self都是类的概念中非常重要的元素。

__init__是一个特殊的方法,它被称为类的构造函数。当创建一个类的实例时,__init__方法会自动调用。它通常用于初始化对象的属性或执行一些类实例创建时需要完成的任务。

self是一个指向类实例本身的引用。在类的方法中,使用self可以访问类实例的属性和方法。self是一个约定俗成的命名,可以使用其他名称,但为了代码的可读性和规范性,建议使用self

当你创建一个类的实例时,__init__方法会被调用,并将实例本身作为第一个参数传递。在__init__方法内部,可以使用self来设置实例的属性或执行其他任务。

例如,下面是一个简单的类,它使用__init__方法初始化一个人的姓名和年龄属性:

代码语言:python
代码运行次数:0
复制
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

当创建一个Person实例时,__init__方法会被调用,并将实例本身作为第一个参数传递:

代码语言:python
代码运行次数:0
复制
p = Person("Alice", 30)

在这个例子中,self指向p这个实例,并且nameage属性被设置为"Alice"30

总之,__init__self是Python类中非常重要的概念,它们用于初始化类实例并访问类实例的属性和方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python类的构造函数__init__(self)析构函数__del__详解

一、构造方法__init__(self) __init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法。...一般用来对实例的属性进行初使化,如果不提供,Python 会给出默认的__init__方法。...class testClass: def __init__(self, name, gender): //定义 __init__方法,这里有三个参数,这个self指的是一会创建类的实例的时候这个被创建的实例本身...testman = testClass('neo,'male') //这里创建了类testClass的一个实例 testman, 类中有__init__这个方法,在创建类的实例的时候,就必须要有方法_..._init__匹配的参数了,由于self指的就是创建的实例本身,self是不用传入的,所以这里传入两个参数。

3.7K20
  • Python中 __init__的通俗解释是什么

    可能大家常常会在面向对象编程中看到__init__,而且几乎每个类中都会有,它的作用都是是什么呢? 要想明白__init__,你首先要弄清楚面向对象是什么?...def __init__(self,...): 代码块 每次创建类的实例对象时,__init__函数就会自动被调用,无论它里面有什么样的变量、计算,统统会自动调用。...、init函数(方法)的第一个参数必须是 selfself为习惯用法,也可以用别的名字),后续参数则可 以自由指定,定义函数没有任何区别。...init__()构造方法 构造函数__init__什么会存在?...所以综上,构造方法__init__用于创建实例对象时使用,每当创建一个类的实例对象时,Python 解释器都会自动调用它,用来初始化对象的某些属性。

    61930

    什么有些程序员工资那么高?他们到底做了什么

    加入程序员这个行业主要还是兴趣使然,对于薪资开始倒是没怎么介意,工作一段时间发现别的行业比还是高一些,毕竟每种职业都有天花板,特别是一些基础行业工资到了一定层面就再也涨不上去了,所以很多在别的行业做了很多年的人开始琢磨着能不能做编程...为什么有些程序员要比一般的程序员要高? 1....3.还有一些高工资的程序员,行业有关特别是有些刚新型的,由于业务快速的发展自然出的薪资水平会高一点,这种需要选择正确的时机了,可能本身的技术能力不一定有关系,毕竟物以稀为贵。...很多职业可能累死累活一辈子也不能上万,在一线城市程序员就现在的消费水平起步过万是非常轻松的事情,程序员这个职业为什么工资上比别的职业高。...1.首先编程相对传统行业属于新型的行业,传统的行业开发出一套产品,还需要组装测试等工序,如果一套软件开发出来可以无成本的推广使用,这种巨大的差异,所以软件产品开发营销最好了,再搭配运营基本上就能把体量做的非常大

    91310

    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继承childABase,如果childB需要调用Base的__init__()方法时,就会导致__init__()被执行两次:class Base(object

    72110

    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继承childABase,如果childB需要调用Base的init()方法时,就会导致init()被执行两次: class Base(object):

    96060

    Python super().__init__Base.__init__的区别

    我们在使用python中的类继承时,子类继承父类后,在重载父类的方法后,在方法中如果要执行父类对应的方法,一般有两种方式:superBase(表示父类名)。...但是直接使用Base类名调用时,方法内部需要知道self是谁。那么两种方式都可以,他们有区别吗?...__init__会有什么结果?...那为什么会有这两中差异呢?我要是不说点有内容的东西 ? 以我做了几年C++的经验,我来给大家琢磨一下,之前的一篇文章中我提到有一个程序存储区,什么是程序存储区呢?就是函数、类这些代码的区域。...__init__func是一样的,这绝不是我们所希望的类函数。那么为什么super会正确的找到要执行的函数呢?

    2.3K30

    详解Python中的__init____new__的区别

    作者:小致dad 原文链接:https://my.oschina.net/liuyuantao/blog/747164 一、__init__ 方法是什么?...使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__ 方法通常用在初始化一个类实例的时候。例如: ? 这样便是__init__最普通的用法了。...二、__new__ 方法是什么? __new__方法接受的参数虽然也是__init__一样,但__init__是在类实例创建之后调用,而 __new__方法正是创建这个类实例的方法。 ?...然后利用这个实例来调用类的__init__方法,上一步里面__new__产生的实例也就是 __init__里面的的 self 所以,__init__ __new__ 最主要的区别在于: 1....其实我最早接触__new__的时候,就是因为需要自定义 metaclass,但鉴于篇幅原因,我们下次再来讲python中的metaclass__new__的关系。

    1.7K10

    Python中的self什么你知道嘛?

    Python类中规定,函数的第一个参数是实例对象本身,并且约定俗成,把其名字写为self。其作用相当于java中的this,表示当前类的对象,可以调用当前类中的属性方法。...11.3 self介绍 这个self是自定义的,完全可以换成别的变量名 self对象指向同一个内存地址,可以认为self就是对象的引用。...self就是这个类的实例对象 self就相当于Java中的this 所谓self,可以理解为对象自己,某个对象自己,某个对象调用其方法时,Python解释器会把这个对象作为第一个参数传递给self,所以开发者只需要传递...这个方法相当于Java的构造方法 # 这个方法是在类实例化对象的时候自动调用的 def __init__(self, name, age, type): self.name..._ _init__方法的区别 new函数是类的实例化方法,必须返回该实例,否则创建不成功 new至少存在一个参数cls,这个参数就是代表要实例化的类,此参数在实例化时由python解释器自动提供 init

    1.7K00

    Python什么要保留显式的 self

    布鲁斯·埃克尔(Bruce Eckel)发了篇博文[1],提议从类方法的形参列表中删除“self”。我将解释为什么这个提议不能通过。...Bruce 的提议 Bruce 知道,我们需要一种方法来区分对实例变量的引用对其它变量的引用,因此他建议将“self”设为关键字。...我认为他真正关心的是程序员(可能来自其它语言)所浪费的时间,有时候似乎不需要指定“self”参数,而且他们偶尔忘记了要加(即使他们十分清楚——习惯是一种强大的力量)。...在类的内部定义方法时,可能会产生几种不同的方法:实例方法、类方法 静态方法。它们的作用行为是不同的,那么在定义调用时怎么做区分呢?...但是,这个习语很容易出错(正是由于需要显式地传递"self"的原因),这就是为什么Python 3000中,我建议在所有情况下都使用"super()"的原因。

    47910

    Python什么要保留显式的 self

    布鲁斯·埃克尔(Bruce Eckel)发了篇博文[1],提议从类方法的形参列表中删除“self”。我将解释为什么这个提议不能通过。...Bruce 的提议 Bruce 知道,我们需要一种方法来区分对实例变量的引用对其它变量的引用,因此他建议将“self”设为关键字。...我认为他真正关心的是程序员(可能来自其它语言)所浪费的时间,有时候似乎不需要指定“self”参数,而且他们偶尔忘记了要加(即使他们十分清楚——习惯是一种强大的力量)。...在类的内部定义方法时,可能会产生几种不同的方法:实例方法、类方法 静态方法。它们的作用行为是不同的,那么在定义调用时怎么做区分呢?...但是,这个习语很容易出错(正是由于需要显式地传递"self"的原因),这就是为什么Python 3000中,我建议在所有情况下都使用"super()"的原因。

    50130

    Python什么要保留显式的 self

    布鲁斯·埃克尔(Bruce Eckel)发了篇博文[1],提议从类方法的形参列表中删除“self”。我将解释为什么这个提议不能通过。...Bruce 的提议 Bruce 知道,我们需要一种方法来区分对实例变量的引用对其它变量的引用,因此他建议将“self”设为关键字。...我认为他真正关心的是程序员(可能来自其它语言)所浪费的时间,有时候似乎不需要指定“self”参数,而且他们偶尔忘记了要加(即使他们十分清楚——习惯是一种强大的力量)。...在类的内部定义方法时,可能会产生几种不同的方法:实例方法、类方法 静态方法。它们的作用行为是不同的,那么在定义调用时怎么做区分呢?...但是,这个习语很容易出错(正是由于需要显式地传递"self"的原因),这就是为什么Python 3000中,我建议在所有情况下都使用"super()"的原因。

    26230

    Flink的groupByreduce究竟做了什么

    [源码解析] Flink的groupByreduce究竟做了什么 0x00 摘要 Groupbyreduce是大数据领域常见的算子,但是很多同学应该对其背后机制不甚了解。...本文将从源码入手,为大家解析Flink中Groupbyreduce的原理,看看他们在背后做了什么。...如果有多个groupby task,什么机制保证所有这些grouby task的输出中,同样的key都分配给同一个reducer。...比如在动物园里有牛羊鸡鸭鹅,他们都是混在一起的,但是到了晚上他们就各自牛回牛棚,羊回羊圈,鸡回鸡窝。partition的作用就是把这些数据归类。...} } 让我们顺着Flink程序执行阶段继续看看系统都做了什么。 0x05 批处理执行计划(Plan) 程序执行的第一步是:当程序运行时候,首先会根据java API的结果来生成执行plan。

    2.6K20
    领券