在Python中引用对象时返回特定数据类型

时间:2015-05-11 16:16:37

标签: python class oop object

通常在Python中输出一个对象时,你定义了__repr__中返回的字符串,但是如果你想让它返回别的东西,比如整数或元组呢?

我举一个例子。我的班级是Users,有成员变量self.usernameself.email。如果我想输出Users类型的对象,我该如何让它作为元组返回(self.username,self.email)

2 个答案:

答案 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)或类似方法。 (请记住不要使用__*__名称)