Python FAQ 032 __new__ 魔法方法的相关问题
Python FAQ 032 __new__ 魔法方法的相关问题问题
最后一句为什么要 return str.__new__(cls, string),直接 return string 不行吗??
class CapStr(str):
def __new__(cls, string):
string = string.upper()
return str.__new__(cls, string)
解答
直接 return string 当然可以,可是他们的 type 不同:
>>> class CapStr(str):
def __new__(cls, string):
string = string.upper()
return str.__new__(cls, string)
>>> type(CapStr('abc')) # 类型是 CapStr
<class '__main__.CapStr'>
>>> class CapStr(str):
def __new__(cls, string):
string = string.upper()
return string
>>> type(CapStr('abc')) # 类型是 str
<class 'str'>
如果直接 return string 的话,那么就和 str.upper 一样了
CapStr = str.upper
—— @永恒的蓝色梦想 {:10_256:} {:10_256:}
页:
[1]