python3中的类和继承

问题描述:

class Myclass(list): 

    def remove_max(self): 
     self.remove(max(self)) 

l = [1,2,3] 

object = Myclass(l) 

object.remove_max() 

print(object) 

在继承自类列表的Myclass中为什么Myclass(l)为该对象赋值[1,2,3]? 即使我们给它一个字符串说'abc'而不是列表l作为输入为什么是列表['a'设置的对象的值。 'B']?python3中的类和继承

+0

请您澄清一下代码和问题吗?我猜想最后四行不应该有缩进? 你是什么意思与“转让”? 'object = Myclass(l)'将[list]构造函数指定为[1,2,3]'(https://docs.python.org/3.5/library/stdtypes.html#list)。下一行删除元素'3'。 – jstriebel

+0

是的,我很抱歉不正确的缩进。我现在编辑了代码 – kmkhan

由于您没有定义__init__方法,因此在施工时给出的参数将被提供给直接父级,此处为list。当你从一个迭代中建立一个列表时,你会得到由不同项目组成的列表。所以:

  • 如果l是一个列表list(l)被初始列表
  • 如果s的副本的字符串(它是字符的一个可迭代),list(s)s
  • 以字符组成的列表