Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python返回非类型对象而不是对象时出现问题_Python_Return_Nonetype - Fatal编程技术网

Python返回非类型对象而不是对象时出现问题

Python返回非类型对象而不是对象时出现问题,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

我正在努力解决一个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'
回溯(最近一次呼叫最后一次):
文件“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