python中的__init__(self)是什么意思呢 init(self)这个时类的初始化函数 1 2 3 4 class Obj: def init(self): print 1 obj = Obj() #这时候__init__这个函数会被调用,self指obj这个对象。 若是解决了您的问题请采纳!若是未解决请继续追问 追问 请问obj=Obj() obj是类Obj的对象吗,Obj()就表明 init()函数吗 追答 不是表明__init__()函数,而是表明会调用__init__()函数,就是建立对象时执行的第一个函数,通常会用来初始化对象。html
Python中,init()方法是所谓的对象的“构造函数”,负责在对象初始化时进行一系列的构建操做 假设有以下类: 1 2 class worker: pass 在Python中,对某个类实例进行成员赋值,能够建立不存在的成员: 1 2 3 >>>a=worker()python
a.pay=55000 a.name='Bob' 若是对于每个worker类的实例对象,都要进行如此赋值的话,这个类会变得很难使用 另外,对于用于特殊场合的类,可能要求在对象建立时,进行链接数据库、链接FTP服务器、进行API验证等操做,这些初始化操做,均可以封装在__init__()方法中进行数据库
__init__方法使用以下规则定义: 1 2 3 class ex: def init(self): pass __init__方法必须接受至少一个参数即self,Python中,self是指向该对象自己的一个引用,经过在类的内部使用self变量,类中的方法能够访问本身的成员变量,简单来讲,self.varname的意义为”访问该对象的varname属性“ 固然,init()中能够封装任意的程序逻辑,这是容许的,init()方法还接受任意多个其余参数,容许在初始化时提供一些数据,例如,对于刚刚的worker类,能够这样写: 1 2 3 4 class worker: def init(self,name,pay): self.name=name self.pay=pay 这样,在建立worker类的对象时,必须提供name和pay两个参数: 1 >>>b=worker('Jim',5000) Python会自动调用worker.init()方法,并传递参数。 一般状况下,self形参由Python自动赋值,可是,在类继承中,并非这样 例如,Python的HTML处理工具HTMLParser,是一个基于OOP模型的工具,要使用该工具,必须编写一个类,继承html.parser.HTMLParser类,并重载一系列方法,以定制本身的功能 1 2 3 4 5 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__方法将所初始化的变量设置成子类的变量,这样,就能够在子类中直接访问超类的变量了。函数