Python返回非类型对象而不是对象时出现问题
我正在努力解决一个python类方法返回非类型值而不是所需对象的问题。我正在与强化学习需要创建一个二维贴图的瓷砖,但我的get_tile方法保持返回NoneTypePython返回非类型对象而不是对象时出现问题,python,return,nonetype,Python,Return,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
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'
回溯(最近一次呼叫最后一次):
文件“C:\Users\Brian\Desktop\supp\Pycharm\Week1\u QTables\main.py”,第163行,在
main()
文件“C:\Users\Brian\Desktop\supp\Pycharm\Week1\u QTables\main.py”,第128行,在main中
envir=TileEnvironment()
文件“C:\Users\Brian\Desktop\supp\Pycharm\Week1\u QTables\main.py”,第48行,在\uuu init中__
self.get_tile(2,3).编辑_类型(2)
AttributeError:“非类型”对象没有“编辑类型”属性
我仍然可以访问envir中的tiles,但是当方法通过它时,程序就会中断
提前感谢您的帮助和考虑您需要使用
和
而不是&
if self.envir[i].x == x and self.envir[i].y == y:
请记住,在Python中,布尔and运算符是和
,而不是其他编程语言中的&
或&
。实际上,在Python中,&
是and运算符
还要记住,当函数/方法到达其主体的末尾时,如果没有显式的返回语句,默认情况下会返回
None
。Python中的布尔运算符是和,而不是&
。另外,如果条件从未为真,get\u tile
返回什么?(提示:返回None
)