我很好奇repr
的工作方式。不能完全是
def repr_(x):
return x.__repr__()
因为不适用于类,即
repr_(int)
导致错误,因为int
的代表期望int
对象作为第一个参数。我知道我可以通过创建具有所需repr
的元类来自定义类的__repr__
,但是我想知道Python内置的repr
是如何工作的? 它如何专门处理将类传递给它的情况。
它会像try catch一样执行什么操作,首先尝试repr_
做我的事,然后在MRO中查找其他代表吗?还是其他?
答案 0 :(得分:0)
弄清楚了。如果我们检查Python内部计算repr
的方式(我们可以在源文件object.c中看到),我们可以看到repr本质上是
def repr_(x):
return x.__class__.__repr__(x)
答案 1 :(得分:0)
导入日期时间
today = datetime.date.today()
打印(今天(今天))
对于类的对象,当obj调用对象时,repr基本上会显示明确的输出。
答案 2 :(得分:-1)
返回一个字符串,其中包含对象的可打印表示形式。 对于许多类型,此函数都会尝试返回一个字符串,该字符串 传递给eval()时将产生具有相同值的对象, 否则,表示形式是用尖括号括起来的字符串 包含对象类型名称以及 附加信息通常包括名称和地址 宾语。一个类可以控制此函数为其返回的内容 实例通过定义 repr ()方法。