关于__new__这个方法越看越懵
class CapStr(str):
def __new__(cls,string):
string=string.upper()
return str.__new__(cls,string)
最后一个为什么要 return str.__new__(cls,string) ,我直接 return string 不行么 不用纠结这些问题,实际中用到的概率接近于零。 如果 return string 的话,那么就可以这么写了CapStr=str.upper 永恒的蓝色梦想 发表于 2020-4-7 21:44
如果 return string 的话,那么就可以这么写了
啥意思 ? Kur0 发表于 2020-4-7 23:08
啥意思 ?
如果你要 return string 的话,那么它就和 str.upper 一样了 type 值不同:
>>> class CapStr(str):
def __new__(cls,string):
string=string.upper()
return str.__new__(cls,string)
>>> type(CapStr('abc'))
<class '__main__.CapStr'>
>>> class CapStr(str):
def __new__(cls,string):
string=string.upper()
return string
>>> type(CapStr('abc'))
<class 'str'>
页:
[1]