__call__:实现了__call__的对象是可调用的
__repr__:实现了__repr__的对象可以输出对象的相应属性信息
比如说:
class Student: def __init__(self,id,name): self.id=id self.name=name def __repr__(self): return 'id='+str(self.id)+', name='+self.name def __call__(self): print("I can be called") print(f'my name is {self.name}')
首先创建一个对象:
stu=Student(id-1,name="tom")
判断该对象是否是可调用的:
callable(stu)
输出:True
那么,就可以使用如下方式调用该对象:
stu()
输出:
I can be called
my name is 张三
而对于实现了__repr__魔术方法的类而言,我们可以使用如下方式打印其相关的属性信息:
print(stu)
输出:
id=1, name=张三
需要注意的是,我们需要将self.id转换成str的格式,不然会报错。也就是说__repr__实际上是将对象以字符串的格式进行输出。
同样的,我们也可以使用ascii函数将对象以ascii的格式进行输出:
ascii(stu)
输出;
'id=1, name=\u5f20\u4e09'