类型实现了自己的__new__(),然后__str__()就不好用了

weixin_42195275 2018-05-13 01:21:33
例如,我有下面一段代码:

class he(object):
def __str__(self):
return 'he'
h = he()
print h

打印
he
但是如果我加入一个__new__的实现,那么:


class he(object):
def __new__(cls,*args,**kwargs):
print 'he.__new__'
def __str__(self):
return 'he'
h = he()
print h

打印出来就是:

he.__new__
None


看起来__str__没有起到任何作用了。难道__new__和__str__冲突吗?
...全文
836 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
__new__这个魔法方法是用来创建对象的,需要有返回值,后面的__init__已经这个类的一切才可以正常执行 return object.__new__(cls)
oyljerry 2018-05-14
  • 打赏
  • 举报
回复
__new__ 需要返回创建的对象。你没返回就默认返回None了

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧