对int进行子类化并重写__init__方法 - Python

时间:2011-04-17 13:59:56

标签: python int subclassing built-in

  

可能重复:
  inheritance from str or int

嗨大家好,

我正在尝试将int类子类化而没有任何成功。这是我的尝试:

class SpecialInt(int):
    def __init__(self, x, base=10, important_text=''):
        int.__init__(self, x, base)
        self.important_text=important_text

如果我执行以下操作:

integer = SpecialInt(123, 10, 'rage of the unicorns')

我收到此错误:

TypeRror: int() takes at most 2 arguments (3 given)

有什么想法吗? :)

2 个答案:

答案 0 :(得分:6)

请参阅__new__

  

__new__()主要用于允许不可变类型的子类(如int,str或tuple)自定义实例创建。它也通常在自定义元类中重写,以自定义类创建。

答案 1 :(得分:1)