python-3.x 我不明白为什么变量没有被定义[关闭]

mm5n2pyu  于 2023-05-30  发布在  Python
关注(0)|答案(1)|浏览(170)

**关闭。**此题需要debugging details。目前不接受答复。

编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答这个问题。
4天前关闭。
Improve this question

def use_tool(self):
    if self.selectd_tool == 'hoe':
        pass
    if self.selectd_tool == 'axe':
        for tree in self.tree_sprites.sprites():
            if tree.rect.collidepoint(self.target_pos):
                tree.damage()

    if self.selectd_tool == 'water':
        pass

def get_target_pos(self):
    self.target_pos = self.rect.center + PLAYER_TOOL_OFFSET[self.status.split('_')[0]]

错误:

File "F:\симулятор фермера на питоне\player.py", line 54, in use_tool
    if tree.rect.collidepoint(self.target_pos):
AttributeError: 'Player' object has no attribute 'target_pos'. Did you mean: 'get_target_pos'?

我真的不明白问题出在哪里,所以我想不出怎么解决它

ctehm74n

ctehm74n1#

发生这种情况的原因是use_tooltarget_pos有机会初始化之前被调用。在类中定义target_pos之前,调用语句self.target_pos无效。
为了解决这个问题,可以向类中添加一个__init__构造函数,然后可以执行任何需要的初始化步骤,包括按照需要设置target_pos。以下是有关__init__的更多学习链接:https://www.geeksforgeeks.org/init-in-python/
如果初始化很简单,也可以在类的顶部添加一个快速行。这一行可以添加到类声明符的正下方。比如说

class Player(object):
    target_pos = some value

相关问题