首页 > 解决方案 > Python OOP 输出错误,有什么想法吗?

问题描述

我在一个更大的项目上工作,我遇到了这个问题。为什么这个输出是 2,3 而不是 2,2?

class Pos:
    def __init__(self):
        self.x = 1
        self.y = 0

class Snake:
    snake = []

    def __init__(self):
        for h in range(0, 100):
            self.snake.append(Pos())

    def add(self):
        self.snake[0].x += 1
        print(self.snake[0].x)


snakes = []
j = 2

for i in range(0, j):
    snakes.append(Snake())

for i, snk in enumerate(snakes):
    snakes[i].add()  # || snk.add()



标签: pythonoop

解决方案


使snake列表成为对象属性应该可以解决问题。

class Pos:
    def __init__(self):
        self.x = 1
        self.y = 0

class Snake:

    def __init__(self):
        self.snake = []

        for h in range(0, 100):
            self.snake.append(Pos())

    def add(self):
        self.snake[0].x += 1
        print(self.snake[0].x)


Snakes = []
j = 2

for i in range(0, j):
    Snakes.append(Snake())

for i, snk in enumerate(Snakes):
    Snakes[i].add()  # || snk.add()

# print(Snakes[0].snake[0].x)
# print(Snakes[1].snake[0].x)

推荐阅读