我正在尝试创建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
'''
我要去哪里?
答案 0 :(得分:0)
谢谢大家的反馈。在清理代码以使其具有最小的可复制性时,我发现了问题所在。根据Jonrsharpe的注释,我将继承调用更正为“ super()。 init (self)”。一旦正确,我就意识到了它们的定义方式,我必须在属性调用中加上括号:“ Dragonborn()。racial_str_bonus”。
再次感谢,我会记得以后会改进我的意见。