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 .