Python 返回 NoneType 对象而不是 Object 的问题
Problem with Python returning a NoneType object instead of the Object
我正在努力使用 python class 方法 returning NoneType 值而不是所需的对象。我正在处理强化学习,需要创建一个二维图块地图,但我的 get_tile 方法保持 return 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'
我仍然可以访问 envir 中的图块,但是当方法通过时,程序中断。
在此先感谢您的帮助和考虑
您需要使用 and
而不是 &
if self.envir[i].x == x and self.envir[i].y == y:
请记住,在 Python 中,布尔运算符和运算符是 and
而不是其他编程语言中的 &
或 &&
。实际上,在 Python 中 &
是和位运算符。
还请记住,当 function/method 到达其主体的末尾时,如果没有明确的 return 语句,则 None
默认为 returned .
我正在努力使用 python class 方法 returning NoneType 值而不是所需的对象。我正在处理强化学习,需要创建一个二维图块地图,但我的 get_tile 方法保持 return 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'
我仍然可以访问 envir 中的图块,但是当方法通过时,程序中断。
在此先感谢您的帮助和考虑
您需要使用 and
而不是 &
if self.envir[i].x == x and self.envir[i].y == y:
请记住,在 Python 中,布尔运算符和运算符是 and
而不是其他编程语言中的 &
或 &&
。实际上,在 Python 中 &
是和位运算符。
还请记住,当 function/method 到达其主体的末尾时,如果没有明确的 return 语句,则 None
默认为 returned .