Python __new__ 为什么在Python2中代码可以执行,在Python3中提示object没有参数?
classPerson:def__new__(cls,name,age):returnsuper(Person,cls).__new__(cls,name,age)def...
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 展开
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 展开
3个回答
展开全部
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个最佳回答真是误人子弟,python2.7 是 super(object, cls).__new__(cls,*args,**kwargs)
到了 py3.5 super(Singleton, cls).__new__(cls)
到了 py3.5 super(Singleton, cls).__new__(cls)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你好,题主我也遇到了这个问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询