|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 十月故里 于 2020-3-7 22:46 编辑
- class C(list):
- def __new__(cls,*n):
- print(n)
- return list.__new__(list,n)
- C(1,2,3,4,5)
- (1, 2, 3, 4, 5)
- []
- class C(list):
- def __new__(cls,*n):
- print(n)
- return list.__new__(cls,*n)
- C((1,2,3,4,5))
- ((1, 2, 3, 4, 5),)
- [1, 2, 3, 4, 5]
- class C(int):
- def __new__(int,s):
- print(s)
- return str.__new__(str,s)
- >>> C(1)
- 1
- '1'
复制代码
第一个类,执行完,返回空列表,第二个类执行完,能返回非空列表,于是我一开始理解成def里面的(cls,n)只要和return里面的(cls,n)的类一样的时候,C这个类的new执行完的结果就会传递到return这里执行这里的语句
第一个类由于def和return里的类不一样,C的new的结果没传递到return这里,于是返回了一个空的列表
而第二个类由于类一样,结果传过去了,返回了一个非空列表
于是我改写了一下在次尝试一下,得到第三个类,但是结果却出乎意料,参数传过去了,返回了字符串。。。emmmm这就蒙圈了,这是啥情况 |
|