在上一篇博文里,传入参数时,是在实例化对象后且在调用方法时才传入参数,感觉是不是有点繁琐对吧?可以在实例化的时候就传入参数吗?可以的,这就是本篇博文的要讲到的构造器——__init__(两边双下划线)
初始化方法,也叫构造器,会在特定条件下自动调用其内的方法
除了有构造器的作用,和其他方法没什么区别
结果:
这里要注意了,如果使用了构造器,那么在实例化对象时就要传入参数,不能像之前在调用方法时再传入了,这里和python2是一样的。可以对比一下:
使用构造器:
不使用构造器:
不使用构造器时实例属性是调用方法再传入参数,也就是在方法之下的,所以必须在调用时才赋值,你可能想问,我在之前赋值呢?
果然是报错的。
所以,注意分清使用构造器和不使用构造器的区别就行。而使用构造器可以带来诸多方便(上面的例子已经可以看出)。在实际的开发中还是建议使用构造器
其实你有没有觉得,把人类和这一板块提到的类做抽象的比较,有很多相似的地方对不?每个人都不同,都是独一无二的,各自都会有自己的小秘密不希望其他任何人知道,那么类也有这样的情况——公有属性和私有属性
就是字面意思,公有就是大家都能访问,都知道的属性,私有属性就是类的独特属性,不公开的。
不能被直接访问的就是私有属性,在前面用了那么多,能够直接调用就可以访问的就是私有属性
因为类是我们人为定义的,所以公有属性和私有属性也是人为定义的,且看例子:
那么你看出来了,双下划线和单下划线开头的原则上都不能被外部访问的。但是单下划线是伪私有属性,给上全称就可以访问了,但是双下划线不行,前面加双下划线就是我们的私有属性了
其实,双下划线也是伪私有属性,一样可以访问的,请看:
只要按照格式:实例化对象._类名__私有属性名 就可以访问。
并且再看一个例子:
像这样利用调用方法来返回私有属性一样可以访问。
所以,双下横线和单下横线开头的原则上都不能被外部访问,但是在python中的私有变量,都是伪私有
转载于:https://www.cnblogs.com/Eeyhan/p/7676447.html