@创建于:20210707
@修改于:20210707
魔术方法就是一个类/对象中的方法,和普通方法唯一的不同时,普通方法需要调用!而魔术方法是在特定时刻自动触发。
1、魔术方法介绍
1.1 初始化方法__init__
触发时机:初始化对象时触发(不是实例化触发,但是和实例化在一个操作中)
参数:至少有一个self,接收对象
返回值:无
作用:初始化对象的成员
注意:使用该方式初始化的成员都是直接写入对象当中,类中无法具有
1.2 str
触发时机:使用print(对象)或者str(对象)的时候触发
参数:一个self接收对象
返回值:必须是字符串类型
作用:print(对象时)进行操作,得到字符串,通常用于快捷操作
注意:无
1.3 getitem
用于自定义容器类型,定义当某一项被访问时,使用 self[key] 所产生的行为
1.4 len
触发时机:使用len(对象) 的时候触发
参数:一个参数self
返回值:必须是一个整型
作用:可以设置为检测对象成员个数,但是也可以进行其他任意操作
注意:返回值必须必须是整数,否则语法报错,另外该要求是格式要求。
2、例子
class Fun:
def __init__(self, x_list):
""" initialize the class instance
Args:
x_list: data with list type
Returns:
None
"""
if not isinstance(x_list, list):
raise ValueError("input x_list is not a list type")
self.data = x_list
print("intialize success")
def __getitem__(self, idx):
print("__getitem__ is called")
return self.data[idx]
def __len__(self):
print("__len__ is called")
return len(self.data)
def __str__(self):
print("__str__ is called")
return "called for print(fun)"
fun = Fun(x_list=[1, 2, 3, 4, 5])
print(fun[2])
print(len(fun))
print(fun)
intialize success
__getitem__ is called
3
__len__ is called
5
called for print(fun)