_init_根据其英文意思(initialize),用来初始化一个类(class)的新成员(instance),它是一个constructor.
当新成员被创建时,这个方程会自动被调用。
有个答主对init的功能,解释的很清楚,这里不再重复。单独谈谈Python编程与经典编程语言的一个差异。
本人新建一个程序员交流圈子,群主是10年老技术人员,某上市公司的技术负责人,群里面每天会给群友解答疑问,招聘内推,点击即可加入圈子 验证码:cs
变量"先定义再使用"VS"使用时定义"
经典语言如C/C++/Java等,变量(包括普通变量、类成员)都是要先定义,再使用。这么做的好处是程序很规范。易学智能记得读研期间有门课”形式化验证“,专门研究代码自动检查,其中有条就是”变量是否先定义再使用“。
但它的缺点也是明显的,不够灵活,用起来总感觉条条框框太多、不那么爽。
Python在灵活性上有了极大提升。它对变量(包括普通变量、类成员)支持”使用时定义“的模式。第一次使用时就默认定义。
这么一搞,大神们是玩的爽了。经常是一行Python代码,C语言要忙成狗写一大篇,才能完成相同功能。
但是,这种搞法的缺点也出来了。一段程序,到底有多少个变量,都不容易搞明白。对一个类,有多少成员变量,也不容易搞清楚。
- 类init方法的一点认识
类的init方法,老阿姨觉得,应该是某种折中的解决方案。通过init,类有多少成员变量,一目了然。
但是,我们必须明白,Python的灵活性是骨子里的,即使用了init,你仍然可以在类的方法实现体中,通过类似于"self.xx=aa"的语句,引入新的成员变量xx。所以,除非类的作者严格遵从”所有成员变量均在init中定义“的规范,否则你仍然不能只看init就确定一个类的全部成员变量。