从 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 就像我上面的那样。
我是从 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 就像我上面的那样。