**关闭。**此题需要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'?
我真的不明白问题出在哪里,所以我想不出怎么解决它
1条答案
按热度按时间ctehm74n1#
发生这种情况的原因是
use_tool
在target_pos
有机会初始化之前被调用。在类中定义target_pos
之前,调用语句self.target_pos
无效。为了解决这个问题,可以向类中添加一个
__init__
构造函数,然后可以执行任何需要的初始化步骤,包括按照需要设置target_pos
。以下是有关__init__
的更多学习链接:https://www.geeksforgeeks.org/init-in-python/如果初始化很简单,也可以在类的顶部添加一个快速行。这一行可以添加到类声明符的正下方。比如说