从 python 中的方法返回值

Returning a value from a method in python

我是从 perl 转到 python,这个问题似乎无法用 google 搜索,因为不相关的例子太杂乱了。

我正在尝试为可变长度的对象列表创建快速查找索引。可以按名称或编号返回对象。 byname 和 bynum 方法在 "return"

处抛出语法错误

我在这里做错了什么?

提前致谢!

class BookSumIndex():

        bookptr = 0
        BookSum = []; # object container
        ByName = {}   # named referent to objects 
        ByNum = {}    # numerical referent to objects

        def addbook(self,thisbook,bookname,booknum):
                self.BookSum.insert(self.bookptr,BookSumObject())
                namepair = {bookname:self.bookptr}
                numpair = {booknum:self.bookptr}
                self.ByName.update(namepair)
                self.ByNum.update(numpair)
                self.bookptr += 1

        def byname(self,bookname):
                bnam = self.ByName.get(bookname)
                if type(bnam) != "NoneType":
                        thisbook = self.BookSum.get[int(bnam)]
                        return thisbook

        def bynum(self,booknum):
                bnum = self.ByNum.booknum
                if type(bnum) != "NoneType":
                        thisbook = self.BookSum[self.ByNum.get[int(bnum)]
                        return thisbook

您在 bynum 方法中缺少本书的右大括号。

thisbook = self.BookSum[self.ByNum.get[int(bnum)]

应该是:

thisbook = self.BookSum[self.ByNum.get[int(bnum)]]

我也建议你使用比较:

bnum is not None

而不是:

type(bnum) == "NoneType"

我不确定您为什么会收到语法错误,但由于不 return 值的方法会将 None 分配给变量,您也可以 return a None 查看 IDE 是否不再标记这些方法。例如:

def bynum(self,booknum):
    bnum = self.ByNum.booknum
    if bnum is not None:
        thisbook = self.BookSum[self.ByNum.get[int(bnum)]
        return thisbook
    else:
        return None

也为了以防万一检查这本书的缩进和 return 就像我上面的那样。