__new__覆盖不起作用

时间:2014-02-14 13:25:39

标签: python oop python-2.7

我是否知道为什么myClass1myClass2在覆盖__new__()方法时表现不同?建议哪种方式写一个类,为什么?我认为myClass1():甚至没有致电__new__(cls),我是对的吗?

$ python
Python 2.7.5+ (default, Sep 19 2013, 13:49:51) 
[GCC 4.8.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> class myClass1():
...     def __new__(cls):
...             print cls.__name__
... 
>>> class myClass2(object):
...     def __new__(cls):
...             print cls.__name__
... 
>>> o1 = myClass1()
>>> o2 = myClass2()
myClass2
>>> 

1 个答案:

答案 0 :(得分:5)

当您从object继承时,您正在创建new-style class。不继承自object使其成为旧式的类。

旧式类不支持__new__构造函数。

在Python 3中,所有类都是新式的,如果没有指定明确的基类,则object基类是隐式的。