Python类和方法_init和str方法
一,init方法
init 方法就是对initialization的缩写,初始化的意思,这个方法相当于C++中的构造函数,是一种特殊的方法,在对象被实例化的时候被调用。
这个方法的全名是_ _init_ _,在 Time 类当中,init 方法示例如下:
>>> class Time:
... def print_time(self):
... print('%.2d:%.2d:%.2d' % (self.hour, self.minute, self.second))
... def __init__(self, hour=0, minute=0, second=0):
... self.hour = hour
... self.minute = minute
... self.second = second
...
一般情况下,init 方法里面的参数与属性变量的名字是相同的,比如self.hour = hour就存储了参数 hour 的值,赋给了属性变量hour本身。
这些参数都是可选的,所以如果你调用 Time 对象,但不给任何参数,得到的就是默认值。
>>> time = Time()
>>> time.print_time()
00:00:00
如果你提供一个参数,就先覆盖 hour 的值:
>>> time = Time(10)
>>> time.print_time()
10:00:00
如果提供两个参数,就先后覆盖hour和minute的值:
>>> time = Time(10, 30)
>>> time.print_time()
10:30:00
提供三个参数,连second的初始值也会覆盖:
>>> time = Time(10, 30, 45)
>>> time.print_time()
10:30:45
二,str方法
str 是一种特殊的方法:接收一个对象,返回一个代表该对象的字符串。
>>> class Time:
... def __str__(self):
... return '%.2d:%.2d:%.2d' % (self.hour, self.minute, self.second)
... def __init__(self, hour=0, minute=0, second=0):
... self.hour = hour
... self.minute = minute
... self.second = second
...
>>> time = Time(10, 30)
>>> print(time)
10:30:00
这样当你用 print 打印输出一个对象的时候,Python 就会调用这个 str 方法。
写一个新的类的时候,总要先写出来 init 方法,这样有利于简化对象的初始化,还要写个 str 方法,这个方法在调试的时候很有用。
结束。