通常在Python中输出一个对象时,你定义了__repr__
中返回的字符串,但是如果你想让它返回别的东西,比如整数或元组呢?
我举一个例子。我的班级是Users
,有成员变量self.username
和self.email
。如果我想输出Users
类型的对象,我该如何让它作为元组返回(self.username,self.email)
?
答案 0 :(得分:0)
你做不到。来自__repr__
的返回值必须是字符串,并且该字符串的内容应表示有效的Python表达式,如果可能,可以将其传递给eval()
以创建该类型的新对象。
https://docs.python.org/2/reference/datamodel.html#object.repr
答案 1 :(得分:0)
对象的__*__
属性旨在实现Python语言标准化的内部函数。与__add__
(用于提供object + whatever
的结果一样,__repr__
应该以定义的方式运行,其中包括返回(a)某些数据类型。 / p>
虽然静态类型语言将报告编译时错误,但对于像Python这样的动态类型语言,这可能会导致意外(但未定义!)运行时行为。这甚至不需要导致错误消息。因此,永远不要将这种行为改为意外。
如果您想要返回自定义内容,请使用自定义方法,例如get_info(self)
或类似方法。 (请记住不要使用__*__
名称)