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中的类和继承
答
由于您没有定义__init__
方法,因此在施工时给出的参数将被提供给直接父级,此处为list
。当你从一个迭代中建立一个列表时,你会得到由不同项目组成的列表。所以:
- 如果
l
是一个列表list(l)
被初始列表 - 如果
s
的副本的字符串(它是字符的一个可迭代),list(s)
从s
以字符组成的列表
请您澄清一下代码和问题吗?我猜想最后四行不应该有缩进? 你是什么意思与“转让”? 'object = Myclass(l)'将[list]构造函数指定为[1,2,3]'(https://docs.python.org/3.5/library/stdtypes.html#list)。下一行删除元素'3'。 – jstriebel
是的,我很抱歉不正确的缩进。我现在编辑了代码 – kmkhan