2012-07-20 26 views
6

假设我在Python 3中有一个基本的类,它代表了一些类似数字的数据类型。我想这样做,当我有一个实例,这个类的实例,我可以调用int(x),并让它调用我的转换函数返回整数部分。在Python中重载int()

我确定这很简单,但我似乎无法找到如何去做。

回答

13

您覆盖__int__魔术方法按照下面的例子...

class Test: 
    def __init__(self, i): 
     self.i = i 
    def __int__(self): 
     return self.i * 2 

t = Test(5) 
print(int(t)) 
# 10 
7

重写__int__()方法。

+0

我是在假设这是新的Python 3纠正? – 2012-07-20 08:52:01

+2

@Joel:[一点都不]。(http://docs.python.org/reference/datamodel.html#object.__complex__) – 2012-07-20 08:53:28

+0

你每天都会学到新的东西!虽然我很惊讶,但在阅读文档时忽略了这一点:P – 2012-07-20 15:50:13