首次使用Python并且无法使add和assign运算符正常工作。口译员不停地说SyntaxError: invalid syntax
。有谁知道如何解决这个问题?
def addRead(self, i=1):
if(i<1):
return self.getNumPages += i
也试着无济于事。
def addRead(self, i=1):
if(i<1):
return
self.getNumPages += i
答案 0 :(得分:3)
a += b
是一个语句,因此不会计算为值。因此,返回它是没有意义的。将它拆分为线条,返回所需部分:
self.getNumPages += i
return self.getNumPages
答案 1 :(得分:3)
当你收到getNumPages
是一种方法的消息时,最直观的方法就是调用它来获得结果。
但这与你正在做的事情相矛盾:
如果是数据属性,+=
会起作用。但是你不能为方法调用的结果重新赋值。
因此,根据您的尝试,可以采用以下方法之一:
numpages = self.getNumPages() # first step: get the result
numpages += i # get the new value
# or just: numpages = self.getNumPages() + i
self.setNumPages(numpages) # set the new value would be the equivalent of the += stuff.
return numpages
如果您不想重新分配值,则只需执行
return self.getNumPages() + i
但请注意,Python中的getter和setter方法非常不寻常。您可以直接使用属性,也可以将它们包装在一个属性中,该属性本质上是一种“内置的getter / setter”东西。
class Whatever:
def getNumPages(self):
return self._numpages
def setNumPages(self, newone)
self._numpages = newone
# now the property stuff:
@property
def numpages(self): # the getter
return self.getNumPages()
@numpages.setter
def numpages(self, newone)
self.setNumPages(newone)
这个属性(基本上没用,只会在设置或获取时产生副作用或修改/计算其他东西时使用)使我们能够做到
self.numpages += i
return self.numpages
这可能是你想要的。