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