我需要继承list类并覆盖 init ()方法来获取参数a,b。 a应该是我初始化列表的长度,b应该是列表中Items之间的步骤。我只是不知道从哪里开始覆盖init方法。
def myclass(list):
def __init__(a,b,*args, **kwargs):
pass
我不知道该怎么办。
我见过我能做到这一点:
class MyClass(list):
def __init__(a,b):
data =[x for x in range(0,a*b,b)]
list.__init__(self,data)
但是我不熟悉python如何实现list类,例如我如何使用我刚刚传递的列表理解。
答案 0 :(得分:0)
你应该用super来调用list方法,在这种情况下它看起来像这样:
class myclass(list):
def __init__(self, a, b, *args, **kwargs):
super(myclass, self).__init__() # this will call the list init
# do whatever you need with a and b
l = myclass(10, 0)
l.append(10) # this will calls list append, since it wasn't overriden.
print l
答案 1 :(得分:0)
#!/usr/bin/python
class myclass:
# use the init to pass the arguments to self/the class
def __init__(self, list, num):
self.list = list
self.num = num
# use this to use the variables
def use_the_stuff(self):
#prints the item in the given place
# i.e in a list of ["A","B","C"]
# if self.num is 0, then A will be printed.
print self.list[self.num]
list_abc = ["A", "B", "C"]
myclass(list_abc, 2).use_the_stuff()
基本上使用带有init的类来获取列表并对其进行处理。
答案 2 :(得分:0)
感谢所有回复的人。意识到我可以通过这种方式实现我想要的目标:
class myclass(list):
def __init__(self,a,b):
data =[x for x in range(0,a*b,b)]
self.length = len(data)
super(myclass, self).__init__()
self.extend(data)