如何解决Python 返回 NoneType 对象而不是 Object 的问题
我正在努力使用返回 NoneType 值而不是所需对象的 python 类方法。我正在使用强化学习,需要创建一个二维瓷砖地图,但我的 get_tile 方法一直返回 NoneType
class TileEnvironment:
def __init__(self):
self.envir = []
# creates a tile for each position
for i in range(0,4):
for j in range(0,4):
self.envir.append(Tile(i,j,0))
# Changes tileTypes for specific program
self.get_tile(2,3).edit_type(2)
self.get_tile(1,2).edit_type(0)
self.get_tile(2,1).edit_type(1)
self.get_tile(2,2).edit_type(1)
def get_tile(self,x,y):
for i in range(len(self.envir)):
if self.envir[i].x == x & self.envir[i].y == y:
return self.envir[i]
这是我得到的堆栈跟踪
Traceback (most recent call last):
File "C:\Users\Brian\Desktop\SURP\Pycharm\Week1_QTables\main.py",line 163,in <module>
main()
File "C:\Users\Brian\Desktop\SURP\Pycharm\Week1_QTables\main.py",line 128,in main
envir = TileEnvironment()
File "C:\Users\Brian\Desktop\SURP\Pycharm\Week1_QTables\main.py",line 48,in __init__
self.get_tile(2,3).edit_type(2)
AttributeError: 'NoneType' object has no attribute 'edit_type'
我仍然可以访问环境中的图块,但是当方法通过它时,程序会中断。
预先感谢您的帮助和考虑
解决方法
您需要使用 and
而不是 &
if self.envir[i].x == x and self.envir[i].y == y:
请记住,在 Python 中,布尔值和运算符是 and
,而不是其他编程语言中的 &
或 &&
。实际上,在 Python 中 &
是 and 按位运算符。
还要记住,当函数/方法到达其主体的末尾时,如果没有明确的 return 语句,则默认返回 None
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。