马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
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 一样了
|