|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- class Test(list):
- def __new__(cls,*x):
- print(x)
- return list.__new__(cls,x)
- def __init__(self,*x):
- self.L=self
复制代码
- >>> a=Test('a','b','c')
- ('a', 'b', 'c')
- >>> a
- []
- >>> a.L
- []
复制代码
请问这里返回的为什么是个空值?
list是在初始化的时候添加值,而不是实例化时。
所以要这样写:
- class Test(list):
- def __new__(cls,*x):
- print(x)
- return list.__new__(cls,x)
- def __init__(self,*x):
- super().__init__(x)
- self.L=self
- a=Test('a','b','c')
- print(a)
- print(a.L)
复制代码
其实这里__new__方法是没必要重写的,一般实际运用也很少重写__new__方法。可以改成下面这样:
- class Test(list):
- def __init__(self,*x):
- super().__init__(x)
- self.L=self
- a=Test('a','b','c')
- print(a)
- print(a.L)
复制代码
|
|