重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
类比一下Java就很好理解了,__init__是Python类的构造函数,self作用类似于Java中的this指针。
创新互联建站是一家专注于网站设计、成都网站制作与策划设计,高港网站建设哪家好?创新互联建站做网站,专注于网站建设十载,网设计领域的专业建站公司;建站业务涵盖:高港等地区。高港做网站价格咨询:028-86922220
python中的__init__()时类的初始化函数,比如:
class Obj:
def __init__():
print 1
obj = Obj() #这时候调用__init__这个方法
如果解决了您的问题请采纳!
如果未解决请继续追问
通常构造一个类,用 init 初始化:
为什么python类需要初始化
1.python 类初始化属性 def __init__() 中定义,实例化对象后可直接调用
2.python 类非初始化属性在 def func() 中定义,实例化对象后, 先调用调用函数,再调用属性
结果:
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__方法将所初始化的变量设置成子类的变量,这样,就可以在子类中直接访问超类的变量了。
class A:
def __init__(self,newid= None):
self.newid=newid
这个一看就是一个类的初始化属性,你初始化的时候只要import这个对象。
from a import A
obj = A(newid)
这样就传给那个初始化函数了。
这些都是python比较基础的东西,还是建议你找本书看看,至少python的基本语法,类,内置函数这些要高明白。
如果解决了您的问题请采纳!
如果未解决请继续追问
首先你要理解类和实例的区别。
类是你定义的这个新类型,这个类型可以有很多个实例。
比如 a = A(),A是个类,a就是A的一个实例,同样可以b=A(),b也是A的一个实例。
初始化函数__init__在实例刚创建完成的时候调用,这里可以对这个实例的属性进行初始化。
比如:
class A:
def __init__(self,num):
self.data = num
a = A(1)
b = A(2)
a.data的值就是1,b.data的值就是2