之前都是在类定义的过程或外部实例赋值中,给予属性的值的。

其实,在类class的实例化创建过程中,也是可以完成。

Python中有一种很神奇的构造方法,init(全拼是:initialize初始化)前后各加上两个下划线,第一个参数一定是self,上次我们提到过,这个指代实例化后的地址,也就是实例化本身。

其他参数,一般是类实例化后要赋予的属性值,在初始化方法定义中,用self替代,在实例化后,用具体的变量名调用属性。

在具体实例化中,第一个参数是不用传递的,Python会把实例化的地址(引用)传递进去;只要传递其他对应的属性值即可。

类定义中,没有属性的定义,在外部也没有生造属性出来;一切都包含在类创建过程中完成属性的传递和生成。

而init方法(构造),是类创建过程中,默认被调用的,不需要你明着手动调用。

我们在外部(类定义之外)打印类实例时,输出的一般是对象的引用地址。

如果我们想改变这一情况,可以使用另外一个方法,str方法,它同样要在前后各加两个下划线

但参数只有一个,self。

它的作用是,外部调用打印print时,返回字符串。

所以,这个方法需要用return,传递回字符串,也可以传递回f格式的字符串,用法和print是一模一样的。

PS:本文代码基于Windows 10,Python 3.10.4。