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__()函数,就是创建对象时执行的第一个函数,一般会用来初始化对象。

Python中,init()方法是所谓的对象的“构造函数”,负责在对象初始化时进行一系列的构建操作
假设有如下类:
1
2 class worker:
pass
在Python中,对某个类实例进行成员赋值,可以创建不存在的成员:
1
2
3 >>>a=worker()

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__方法将所初始化的变量设置成子类的变量,这样,就可以在子类中直接访问超类的变量了。

最新文章

  1. Spring、hibernate以及struts2三大框架的整合
  2. JSP中动态INCLUDE与静态INCLUDE的区别
  3. [综] Latent Dirichlet Allocation(LDA)主题模型算法
  4. 。。。contentType与pageEncoding的区别。。。
  5. JS手机定位地理位置
  6. codeforces 630J Divisibility
  7. 实例介绍Cocos2d-x中Box2D物理引擎:碰撞检测
  8. javascript随手记
  9. Mishka and Interesting sum
  10. ios微信支付 v3
  11. contenteditable 插入及粘贴纯文本内容
  12. SSM实战
  13. I/O操作之概述与导读
  14. CF_528D
  15. PG数据库基本命令——查询(笔记)
  16. 【linux】Linux系统SELinux简介
  17. VS Code中Matlab插件安装设置
  18. nakadi-ui nakadi event broker 的可视化UI工具
  19. python字符串查找
  20. redis配置文件redis.conf翻译、解释以及常用注意事项(持续更新中...)

热门文章

  1. Linux性能优化实战学习笔记:第十三讲
  2. 第02组 Alpha冲刺(4/6)
  3. JAVA基础系列:内部类获取外部类的成员变量
  4. git合并不同仓库下的分支
  5. Visual Studio 2019(VS2019)正式版注册码秘钥
  6. Swagger2边写代码边写文档
  7. 2017 ACM/ICPC Asia Regional Shenyang Online E number number number 题解
  8. WebRTC之框架与接口
  9. python 练习题:计算的BMI指数,并根据BMI指数条件选择
  10. C#环境配置