class Person:
def __new__(cls,name,age):
return super(Person, cls).__new__(cls,name,age)
def init(self,name,age):
self.name = name
self.age = age
def str(self):
return '%s,%s' % (self.name,self.age)
if name == '__main__':
p = Person('Test',20)
print (p)
这段代码,在Python2中可以,但是在Python3中就提示TypeError: object() takes no parameters
那就是在python3.+中_new_只能用来继承不可变类修改了?
使用以下方式返回实例
object.__new__(cls)
如果用super()Python3会把它当成一个未传参数的实例方法也就是object()