鱼C论坛

 找回密码
 立即注册
查看: 2701|回复: 3

[已解决]python 41讲 __new__问题

[复制链接]
发表于 2019-7-28 10:05:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
41讲视频里面,小甲鱼讲的例子是:
class Capstr(str):
    def __new__(cls,string):
        string = string.upper()
        return str.__new__(cls,string)
最佳答案
2019-7-28 10:11:12
你可以 print 一下他们的 type 值

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

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

两者的类型是不一样的,一个是 Capstr,一个是 str
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-7-28 10:06:39 | 显示全部楼层
但是我发现,把最后一句改为return string
变成:
class Capstr(str):
    def __new__(cls,string):
        string = string.upper()
        return string
输出结果也是一样的,请问这两种有什么区别?为什么用上一种呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-28 10:11:12 | 显示全部楼层    本楼为最佳答案   
你可以 print 一下他们的 type 值

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

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

两者的类型是不一样的,一个是 Capstr,一个是 str
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-28 10:23:58 | 显示全部楼层
zltzlt 发表于 2019-7-28 10:11
你可以 print 一下他们的 type 值

第一种方法:

这样啊,谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 05:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表