你想我椎 发表于 2022-3-6 12:48:19

关于__new__的小疑问

代码如下,有四个小问题:
1、为什么返回 str.__new__(cls,string)没有形成类似递归的循环?
2、实例化的时候为什么只打印了1,没有返回字符串?
3、为什么第四行的实例对象string前面不用加 self. ?
4、这些‘魔法方法’是不是所有定义的类都拥有,只有需要修改默认参数时才需要写出来进行修改?

新手,问题比较多,麻烦大家了

class CapStr(str):
    def __new__(cls,string):
      print(1)
      string = string.upper()
      return str.__new__(cls,string)


子不语不r 发表于 2022-3-6 12:48:47

1你调用的是str的而不是自身的
2你这里就没有返回,你命令行要单输入实例名字
3这里没有self,实例还未创建
4一般自带的类都有,但是每个类的魔法方法也不一样
页: [1]
查看完整版本: 关于__new__的小疑问