类型错误:object.__new__(int)不安全,请使用int.__new__()。

11

在阅读这篇文章:Python中的元类是什么?时,我学习使用以下代码片段来使用__new__

class a(object):
    pass

a.__new__(int,'abcdef',(int,),{})

调用a.使用__new__可能会出现问题。但是,我收到了以下错误信息,其含义我不理解:

TypeError:object.__new__(int) is not safe, use int.__new__()

如果与__new__的使用有关,则可以通过阅读一些书籍进行修正。但是,有人可以解释一下为什么会出现该消息吗?

object.__new__(int) is not safe, use int.__new__()

1个回答

5
简单来说,在2.6版本之前,object.__new__忽略参数,现在它实际可以对参数进行操作,所以警告是有可能会发生不同的事情。
这篇帖子Any ideas about the best work around for __new__ losing its arguments?有更详细的解释。
您可能还想看一下http://docs.python.org/library/functions.html#type 了解Python中所有元编程的可能性很好,但提醒一句,不要过于沉迷其中,因为我见过一些非常“聪明”的解决方案,实际上只是怪异的东西。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接