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