|
10鱼币
如图片所示共三段代码,小弟的疑问①是def__new__(cls,a)括号里的第二个参数是谁传给它的,经过我的实验猜测是Cap(str)里的str原封不动的传给了它,比如下面输如b=Cap('i love you')此时的str就是字符串i love you传递给了a参数,可str是基类呀,还能直接传给def__new__()第二个参数吗?
疑问②是当走到return str.__new__(cls,a)后是不是会默认执行一些代码呀比如__init__?要不然最后在交互模式下b回车[相当于print(b)]后,为何会出现变化后的代码呢。这里小弟大胆猜测并写下了第二段代码,新加了__init__(self,a)__和print(self),发现结果和第一段代码一模一样,此时的self就是变化后的a,因为new的第二个参数会传给__init__(),不知道猜的对不对?
疑问③第三段代码和第二段代码的区别在于输入__init__里的参数时,少输入了a,可此时的self不就是变化后的a传来的吗,为什么还要再加个a呢,加的这个a该怎么理解呢
叙述的不知道大佬能不能看懂?求大佬们帮忙解释解释
是先__new__再__init__的。(new返回实例化对象)
1.对的
2.抱歉,我理解错了您的意思,new返回的对象就是实例化的对象,也就是说,实例化对象主要靠new。
可以做到在new中实例化对象的类估计只有内置类型了吧。
3.类类型就是指一个类型(cls,是类本身),实例化对象就是指一个对象(self,是new返回的已实例化对象)
|
最佳答案
查看完整内容
是先__new__再__init__的。(new返回实例化对象)
1.对的
2.抱歉,我理解错了您的意思,new返回的对象就是实例化的对象,也就是说,实例化对象主要靠new。
可以做到在new中实例化对象的类估计只有内置类型了吧。
3.类类型就是指一个类型(cls,是类本身),实例化对象就是指一个对象(self,是new返回的已实例化对象)
|