python - (类名)没有属性(属性)
问题描述
我正在尝试创建一个 DnD 风格的地牢爬行游戏。我使用 5E SRD 和其他公开信息作为我的角色和游戏玩法的基础。目前我正在研究角色生成器,似乎进展顺利,但在尝试分配种族奖励时遇到了障碍。我已经将种族设置为他们自己的子类,每一个都有它独特的奖金。当我尝试根据角色的种族分配适当的奖金时,我得到一个 (Classname)has no attribute (attribute) 错误。
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
'''
我在哪里胡闹?
解决方案
谢谢大家的反馈。在清理代码以使其具有最低限度的可重复性时,我发现了问题所在。根据 Jonrsharpe 的说明,我将继承调用更正为 'super()。初始化(自我)'。一旦正确,我意识到它们的定义方式,我必须在属性调用中包含括号:“Dragonborn().racial_str_bonus”。
再次感谢,我会记得在未来改进我的提交。
推荐阅读
- c# - 我想在我的 excel 工作表中找到重复的值并在 c# 中更改文本颜色
- c++ - 如何使用 GLFWwindow 指针获取 HWND?
- node.js - 使用knex查找数据节点js
- c++ - 如何将委托^传递给c ++ / cli中的本机类
- android - 我想获取 json 数据的布尔“状态”的值,并根据 kotlin 中的值执行一些操作
- python - 二进制分类的损失没有减少
- python - 数据帧行的快速笛卡尔总和
- bash - 将 BASH 脚本转换为在 SH 上运行(通过 BusyBox)
- java - Payara 5.2020.4 未启动
- java - 从 Spring Security 过滤器返回自定义 http 错误消息