qin_yin 发表于 2020-10-28 20:31:56

魔法方法__new__

本帖最后由 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__方法,困在这里好久了

笨鸟学飞 发表于 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'>
页: [1]
查看完整版本: 魔法方法__new__