写了半个多月的Android和JavaWeb的的作业,终于在昨天把JavaWeb写完,把Android放弃了。还是Python大法好。
话说回来python也学了一段时间,可是很惭愧,因为很少用到类,所以对其类的用法一直是懵懵懂懂。又因为过段时间会有python爬虫的实训课程,所以想先稍微了解一下HTMLParser,一看代码就碰到了__init__、__new__.
关于__init__,在廖雪峰老师的官网上这是这样讲的
那么可以知道,__init__是在创建实例时,默认进行调用并对实例的属性进行初始化(不过,__new__方法会在__init__之前调用),以使我们写代码的时候更加灵活和方便。
所以说在比较简单的程序中,如果没有什么特别的需要初始化的属性的话,问题应该是不大的。这里可以看一下https://blog.csdn.net/geerniya/article/details/77487941
如果C++学的好的话,应该会立马感觉到这有点像构造函数吧(我看了很多贴子,看到有人提到构造函数,才想到我C++学过构造函数这个东西,尴尬。。。),也是用来初始化对象。
百度 构造函数 的话可以在里面看到下面这一段:
维基百科搜索 构造函数:
这里我稍微改一下的话,就可以看出__new__和__init__的调用顺序了:
__init__看起来好像也没那么复杂,其功能就是为实例绑定属性,但让不让__init__绑定属性或者让__init__为谁绑定属性,都是__new__说了算
至于__new__又有什么意义,我暂时还是讲不出东西
不过,感兴趣的同学可以移步到这里https://www.cnblogs.com/ifantastic/p/3175735.html,有专门进解__new__方法。
另外,如果我哪里说的有问题,希望同学们能加以指正(抱拳)
网友评论