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