python3.3 以上版本的新式类中,如何在同时覆盖 __new__ 和 __init__ 时,将自定义的额外参数从 __new__ 传入 __init__ ?

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()