当我尝试输入下面的代码时,我会在控制台上打印[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
答案 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)
,因为self
是Second
,Blah
是class 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)