kogawananari 发表于 2020-9-27 15:33:28

python 继承基本类型遇到的疑问

#继承list的mylist
class my_list(list):
    def __init__(self,*args,**kwargs):
      super().__init__(*args,**kwargs)
    def __str__(self):
      return f'<my_list {self!r}>'

l = my_list({1,2,3,})
l.pop()
print(l)#<my_list >


#继承str的mystr
class my_str(str):
    def __init__(self,*args,**kwargs):
      super().__init__()
    def __str__(self):
      return f'<my_str {self!r}>'

s = my_str('你好')
print(s)#<my_str '你好'>

第16行mystr要写`super().__init__()`
如果和mylist一样写`super().__init__(*args,**kwargs)`会报错
这是为什么{:5_104:}

z5560636 发表于 2021-3-22 09:03:44

作为函数定义时:

1、*参数收集所有未匹配的位置参数组成一个tuple对象,局部变量args指向此tuple对象

2、**参数收集所有未匹配的关键字参数组成一个dict对象,局部变量kwargs指向此dict对象

解包的时候和super().__init__()参数不匹配。
页: [1]
查看完整版本: python 继承基本类型遇到的疑问