0

当我尝试输入下面的代码时,我[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
4

3 回答 3

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
于 2013-10-18T20:45:32.250 回答
0

Blah.track没有return声明,所以它返回None.

您可以通过以下方式解决此问题:

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

此外,Blah.track(self, dot)当您可以调用时,您正在调用self.track(dot),因为self是 a Second,它是 的子类Blah

这可能看起来像这样:

class Second(Blah):
  def __init__(self,arg):
    self.blocky = []
    x = 0
    while x < 2:
       self.blocky.append(self.track(arg))
       x += 1
于 2013-10-18T20:43:26.140 回答
0

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

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

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

Blah.track(self, arg)

self.track(arg)
于 2013-10-18T20:43:39.737 回答