从python中的方法返回值

2024-05-01 21:50:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我是从perl到python的,这个问题对于杂乱无章的无关示例来说似乎是不可理解的

我正在尝试为可变长度的对象列表创建一个快速查找索引。对象可以按名称或编号返回。方法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

Tags: 对象selfgetreturndefbooknamebnumbyname
1条回答
网友
1楼 · 发布于 2024-05-01 21:50:54

你在拜纳姆方法中缺少了这本书的右括号

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

应该是:

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

我还建议您使用以下比较:

bnum is not None

而不是:

type(bnum) == "NoneType"

我不知道为什么会出现语法错误,但是由于一个不返回值的方法会给变量分配一个None,所以您也可以返回一个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

也只是为了以防万一检查这本书的缩进和返回像我上面

相关问题 更多 >