超类继承中的Python Nonetype列表索引

时间:2017-05-31 15:31:58

标签: python inheritance indexing superclass

我的程序中有3个类,我使用超类来从两个基类继承变量。 A类构建包含数字的2个列表,它绘制数字并在其函数中使用。为了索引要绘制的数字的时间和数量,该机制是在B类循环中构建的。迭代次数由变量initXalgorithmIndex确定。对于循环的每次迭代,A类从每个ls1ls2绘制一个数字,其索引为ls[initX] ls[initX]Class New需要继承class Aclass B。但是initXalgorithmIndex会在Nonetype处获得class New。我希望algorithmIndexNonetype的值可以与class B中的值相同。我不知道它为什么会发生,这两个变量是否只是从class A继承而来?对此有什么好的解决方案?

谢谢!

这是我的代码:

ls1 = [1,2,3,4]
ls2 = [3,4,5,6]
algorithmIndex = None
initX = None

class A(object):
    def __init__(self, algorithmIndex, initX):
         self.algorithmIndex = algorithmIndex
         self.x = ls1[initX] #iniX is used as list index, which return a Nonetype in the new class.
         self.y = ls2[initX]
         self.ls1_history = []

         if self. algorithmIndex == 1:
             self.x1 = self.x
             self.ls1_history.append(self.x1)
         else:
             pass


class B(object):
   def __init__(self, arg):
         algorithmIndex = 1
         while algorithmIndex < 4: 
            initX = 0
            while initX < 4:
               self.q.append(A(algorithmIndex, initX)) #initX needs to be included as an argument in class A. 
               initX += 1
         algorithmIndex += 1

   def midpt(self):
         i = 0
         while i < 4:
            mid = self.q[i].ls1_history
            i+=1


class New(A,B):
    def __init__(self, arg, algorithmIndex, initX):
         A.__init__(self, algorithmIndex, initX)
         B.__init__(self, arg)
         self.initX = A.initX
         self.algorithmIndex = A.algorithmIndex

错误:

 self.x = ls1[initX]
 TypeError: list indices must be integers or slices, not NoneType

0 个答案:

没有答案