调用超类的方法并将返回的值添加到数组的问题

时间:2013-10-18 20:35:16

标签: python

当我尝试输入下面的代码时,我会在控制台上打印[None, None]而不是预期的[3, 3],并且想知道有什么方法可以解决这个问题。

class Blah(object):
    def track(self,dot):
      self.dot = dot


class Second(Blah):
  def __init__(self,arg):
    self.blocky = []
      x = 0
       while x < 2:
         self.blocky.append(Blah.track(self,arg))
          x += 1

bleh = Second(3)
print bleh.blocky

3 个答案:

答案 0 :(得分:1)

在其他更小的问题中,您的track方法不返回任何内容,因此您将函数的返回值传递给该列表,该函数不返回任何内容(None

以下对我有用:

class Blah(object):
    def track(self, dot):
      self.dot = dot
      return self.dot


class Second(Blah):
    def __init__(self, arg):
        self.blocky = []
        x = 0
        while x < 2:
            self.blocky.append(self.track(arg))
            x += 1

答案 1 :(得分:0)

Blah.track没有return语句,因此会返回None

您可以通过执行以下操作来解决此问题:

class Blah(object):
  def track(self, dot):
    self.dot = dot
    return dot

此外,当您拨打Blah.track(self, dot)时,您正在致电self.track(dot),因为selfSecondBlahclass Second(Blah): def __init__(self,arg): self.blocky = [] x = 0 while x < 2: self.blocky.append(self.track(arg)) x += 1 的子类

这可能是这样的:

{{1}}

答案 2 :(得分:0)

track方法没有返回任何内容。也许你的意思是这个?

def track(self, dot):
    self.dot = dot
    return dot

此外,由于Second继承自Blah,您可以替换

Blah.track(self, arg)

self.track(arg)