python中的__init__(self)是啥意思呢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中的__init__(self)是啥意思呢相关的知识,希望对你有一定的参考价值。

Python中,__init__()方法是所谓的对象的“构造函数”,负责在对象初始化时进行一系列的构建操作

假设有如下类:

class worker:
    pass

在Python中,对某个类实例进行成员赋值,可以创建不存在的成员:

>>>a=worker()
>>>a.pay=55000
>>>a.name='Bob'

如果对于每一个worker类的实例对象,都要进行如此赋值的话,这个类会变得很难使用

另外,对于用于特殊场合的类,可能要求在对象创建时,进行连接数据库、连接FTP服务器、进行API验证等操作,这些初始化操作,都可以封装在__init__()方法中进行


__init__方法使用如下规则定义:

class ex:
    def __init__(self):
        pass

__init__方法必须接受至少一个参数即self,Python中,self是指向该对象本身的一个引用,通过在类的内部使用self变量,类中的方法可以访问自己的成员变量,简单来说,self.varname的意义为”访问该对象的varname属性“

当然,__init__()中可以封装任意的程序逻辑,这是允许的,__init__()方法还接受任意多个其他参数,允许在初始化时提供一些数据,例如,对于刚刚的worker类,可以这样写:

class worker:
    def __init__(self,name,pay):
        self.name=name
        self.pay=pay

这样,在创建worker类的对象时,必须提供name和pay两个参数:

>>>b=worker('Jim',5000)

Python会自动调用worker.__init__()方法,并传递参数。


通常情况下,self形参由Python自动赋值,但是,在类继承中,并不是这样

例如,Python的html处理工具HTMLParser,是一个基于OOP模型的工具,要使用该工具,必须编写一个类,继承html.parser.HTMLParser类,并重载一系列方法,以定制自己的功能

from html.parser.HTMLParser

class ex2(HTMLParser):
    def __init__(self):
        HTMLParser.__init__(self)

此处,需要调用了HTMLParser类的__init__方法,而且,此处手动给HTMLParser.__init__()方法的self形参赋值,事实上,如果不显式指定self形参的值,Python不会在此处自动为HTMLParser.__init__()方法的self形参进行赋值

如此设计的原因是,在子类中需要获得超类的成员和方法,而通过在子类的__init__方法中调用超类的__init__方法,并手动给它传递指向子类的self值,可以使超类的__init__方法将所初始化的变量设置成子类的变量,这样,就可以在子类中直接访问超类的变量了。

参考技术A

__init__(self)这个时类的初始化函数

class Obj:
    def __init__(self):
        print 1
obj = Obj() #这时候__init__这个函数会被调用,self指obj这个对象。

如果解决了您的问题请采纳!
如果未解决请继续追问

追问

请问obj=Obj() obj是类Obj的对象吗,Obj()就代表 __init__()函数吗

追答

不是代表__init__()函数,而是代表会调用__init__()函数,就是创建对象时执行的第一个函数,一般会用来初始化对象。

本回答被提问者采纳

__init__(self,Name1,Name2,...) 的作用是啥? [复制]

【中文标题】__init__(self,Name1,Name2,...) 的作用是啥? [复制]【英文标题】:What is the function of __init__(self,Name1,Name2,...)? [duplicate]__init__(self,Name1,Name2,...) 的作用是什么? [复制] 【发布时间】:2014-03-29 04:47:59 【问题描述】:

我是python新手,我想知道__init__(self,Name1,Name2,...)的目的是什么 一个班级里面。

【问题讨论】:

这在官方 python 教程以及处理 python 中的类的所有其他教程中都有大量记录。此外,多米尼克链接的重复问题是查询python initpython __init__ 的第一个谷歌结果。在提出问题之前,请花一些精力自己寻找答案。 【参考方案1】:

它是类实例的初始化器。 self 指的是对象本身,而 Name1、Name2 等是初始化器的输入参数。

class Thingy(object):
    def __init__(self, color):
        self.color = color


x = Thingy('red')
print x.color
'red'

【讨论】:

构造函数是__new__。我会打电话给__init__ 一个初始化器。

以上是关于python中的__init__(self)是啥意思呢的主要内容,如果未能解决你的问题,请参考以下文章

python中的self是啥

Python中:self和__init__的含义 + 为何要有self和__init__

转载--------Python中:self和__init__的含义 + 为何要有self和__init__

python的init中self的实际用途是啥? [复制]

这个 Python 程序的错误是啥?

python中self是啥意思?