【发布时间】:2018-07-04 03:52:11
【问题描述】:
案例一:
class Person:
def __new__(cls, *args, **kwargs):
print "called"
return super(Person, cls).__new__(cls, *args, **kwargs)
p=Person()
案例2:
class Person(object):
def __new__(cls, *args, **kwargs):
print "called"
return super(Person, cls).__new__(cls, *args, **kwargs)
p=Person()
在第一种情况下,__new__() 方法不会被调用,但在第二种情况下会调用。
如果它没有被调用,那么Person 对象是如何创建的?
【问题讨论】:
-
我 99.999% 确定你有这个倒退,
__new__在第一种情况下 not 被调用,但 is 在第二。 -
请参阅here 进行测试。
-
无论如何:如果您还不了解旧式类,最简单的做法就是不要费心去学习它们,除非如何不意外地创建它们。这是过时的知识,不太可能对您有用。当然,如果您很好奇,或者如果您(或其他搜索此问题的人)碰巧遇到了需要使用旧式类的极少数情况之一,那么值得在 Stack Overflow 上获得答案。跨度>
标签: python class oop object python-2.x