|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- class CapStr(str):
- def __new__(cls,string):
- string=string.upper()
- return str.__new__(cls,string)
- a=CapStr('I love fishc')
复制代码
这里的str.__new__(cls,string)为什么不是CapStr.__new__(cls,string),调用的不应该是capstr内的方法吗,还有就是str.__new__中的new方法是我定义的这个new方法还是另外只专属于str自身的new方法??有点绕
这里的str.__new__(cls,string)为什么不是CapStr.__new__(cls,string),调用的不应该是capstr内的方法吗
这里 str.__new__(cls,string) 是调用 str 的 __new__ 方法,而你 CapStr.__new__(cls,string) 是调用自身的 __new__
而你自身重写的 __new__ 方法里面如果又再次调用 CapStr.__new__(cls,string) 就会导致无限递归了
还有就是str.__new__中的new方法是我定义的这个new方法还是另外只专属于str自身的new方法??
str.__new__() 是调用 str 类中的 __new__ 方法,属于 str 类的
|
|