长衫罩子龙 发表于 2019-7-28 10:05:23

python 41讲 __new__问题

41讲视频里面,小甲鱼讲的例子是:
class Capstr(str):
    def __new__(cls,string):
      string = string.upper()
      return str.__new__(cls,string)

长衫罩子龙 发表于 2019-7-28 10:06:39

但是我发现,把最后一句改为return string
变成:
class Capstr(str):
    def __new__(cls,string):
      string = string.upper()
      return string
输出结果也是一样的,请问这两种有什么区别?为什么用上一种呢?

zltzlt 发表于 2019-7-28 10:11:12

你可以 print 一下他们的 type 值

第一种方法:
>>> type(Capstr('abcd'))
<class '__main__.Capstr'>


而第二种方法:
>>> type(Capstr("abcd"))
<class 'str'>


两者的类型是不一样的,一个是 Capstr,一个是 str

长衫罩子龙 发表于 2019-7-28 10:23:58

zltzlt 发表于 2019-7-28 10:11
你可以 print 一下他们的 type 值

第一种方法:


这样啊,谢谢啦
页: [1]
查看完整版本: python 41讲 __new__问题