AttributeError:'NoneType'对象没有属性'foo'

时间:2017-11-01 22:59:34

标签: python python-3.x attributeerror nonetype

我收到了这个错误:

[...], line 28, in <module>
    PlayerDamage = Dice * int(set_p_w.player_damage)
AttributeError: 'NoneType' object has no attribute 'player_damage'

当我运行此代码时:

import player
Dice = random.randrange(1, 7)
set_p_w = player.set_player_weapon()
PlayerDamage = Dice * set_p_w.player_damage

这就是player.set_player_weapon()的样子:

def set_player_weapon():
    import items
    player_weapon = items.WBrokenSword
    player_damage = player_weapon.damage

我到处搜索并尝试了一系列不同的解决方案,但没有任何帮助。我的代码出了什么问题?

1 个答案:

答案 0 :(得分:1)

根据您发布的代码,player.set_player_weapon()不会返回任何内容。所以set_p_w没什么。您正在与set_p_w进行交互,就好像它是一个对象,但set_player_weapon()不创建对象,它只设置两个局部变量(player_weaponplayer_damage)然后当函数结束时丢弃它们。

让这个工作的最简单方法是让你的player.set_player_weapon()方法返回一个包含该信息的元组,这样它就可以存储在函数外的变量中:(player_weapon, player_damage)

元组方法

def set_player_weapon():
    import items
    player_weapon = items.WBrokenSword
    player_damage = player_weapon.damage
    return (player_weapon, player_damage)

player_weapon_damage = player.set_player_weapon()
PlayerDamage = Dice * player_weapon_damage[0]

更好的方法是为具有Playerplayer_weapon属性的player_damage以及设置和更改其属性的def set_player_weapon()等方法创建一个类。