鱼C论坛

 找回密码
 立即注册
查看: 1985|回复: 1

魔法方法__new__

[复制链接]
发表于 2020-10-28 20:31:56 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 qin_yin 于 2020-10-28 23:09 编辑



class CapStr(str):
        def __new__(cls,string):
                string = string.upper()
                return str.__new__(cls,string)

a = CapStr('I love Fishc.com!')
a
问题:return str.__new__(cls,string)是怎么具体的一个运行,为什么不直接返回string,在我看来都一样啊
问题:str.__new__(cls,string),这一行的代码我的理解是调用str的__new__方法传入参数类(Capstr),string,疑问str的__new__方法是怎么执行的(str的__new__方法代码是怎么写的)
求大佬详解下__new__方法,困在这里好久了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-28 20:38:15 | 显示全部楼层
>>> class CapStr(str):
        def __new__(cls,string):
                string = string.upper()
                return str.__new__(cls,string)

>>> a = CapStr('I love Fishc.com!')
>>> type(a)
<class '__main__.CapStr'>
======================如果返回字符串呢?==========
>>> class CapStr(str):
        def __new__(cls,string):
                string = string.upper()
                return 'I love Fishc.com!'

>>> a = CapStr('I love Fishc.com!')
>>> type(a)
<class 'str'>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-10 18:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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