我是否知道为什么myClass1
和myClass2
在覆盖__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
>>>
答案 0 :(得分:5)
当您从object
继承时,您正在创建new-style class。不继承自object
使其成为旧式的类。
旧式类不支持__new__
构造函数。
在Python 3中,所有类都是新式的,如果没有指定明确的基类,则object
基类是隐式的。