(类名)没有属性(属性)

时间:2019-08-09 19:37:49

标签: python python-3.x

我正在尝试创建DnD风格的地牢爬行游戏。我使用5E SRD和其他可公开获得的信息作为我的角色和游戏玩法的基础。 目前,我正在开发角色生成器,而且运行情况似乎很好,但是在尝试分配种族奖金时遇到了障碍。我将种族设置为自己的子类别,每个类别都有其独特的奖金。当我尝试根据角色的种族分配适当的奖金时,我得到的(类名)没有属性(属性)错误。

python
    class Race:
    def __init__(self, race):
        self.name = race
        self.racial_str_bonus = 0
        self.racial_char_bonus = 0


class Dragonborn(Race):
    def __init__(self):
        super()
        self.name = "Dragonborn"
        self.racial_str_bonus = +2
        self.racial_char_bonus = +1


def get_racial_bonus(race):
    race = race
    racial_str_bonus = 0
    racial_char_bonus = 0
    if race == "Dragonborn":
        racial_str_bonus = Dragonborn.racial_str_bonus
        racial_char_bonus = Dragonborn.racial_char_bonus
    return racial_str_bonus, racial_char_bonus


class BaseCharacter:
    def __init__(self, racial_str_bonus, racial_char_bonus):
        self.racial_str_bonus = racial_str_bonus
        self.racial_char_bonus = racial_char_bonus

    @classmethod
    def generate_player_character(cls):
        cls.race = input("Race: ")
        get_racial_bonus(cls.race)


BaseCharacter.generate_player_character()

我正在寻找的东西类似于:

'''
Race: Dragonborn
print(my_player_char.racial_str_bonus)
2
'''

我要去哪里?

1 个答案:

答案 0 :(得分:0)

谢谢大家的反馈。在清理代码以使其具有最小的可复制性时,我发现了问题所在。根据Jonrsharpe的注释,我将继承调用更正为“ super()。 init (self)”。一旦正确,我就意识到了它们的定义方式,我必须在属性调用中加上括号:“ Dragonborn()。racial_str_bonus”。

再次感谢,我会记得以后会改进我的意见。