SyntaxError:“+ =”是一个意外的令牌

时间:2014-05-24 22:28:19

标签: python

首次使用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

2 个答案:

答案 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

这可能是你想要的。