对象是否可以返回整数但具有自定义类型?

时间:2018-05-11 21:29:19

标签: python class object types int

是否可以在Python中执行此操作:

class Foo():
    def __init__(self):
        self.bar = MyClass()

foo = Foo()  

assert foo.bar == 0
assert type(foo.bar) == MyClass

如果0是一个字符串,则__repr__可以在MyClass中使用。该值为“0”,但类型为MyClass。但是因为__repr__只能返回字符串,而foo.bar必须是int __repr__才行。那么是否可以让MyClass()给出值0(int),但仍然将其类型保持为MyClass?

1 个答案:

答案 0 :(得分:2)

您可以使用实现numbers的Python标准库的PEP 3141包来完成您所说的内容。具体来说,您可以从MyClass派生numbers.Integral,并根据需要覆盖特殊方法。