【问题标题】:Referencing self variables outside of original class在原始类之外引用自变量
【发布时间】:2015-11-03 20:52:20
【问题描述】:
class player(object):
    def __init__(self):
        self.health = 100
        self.stats = {'STR': 0,
                     'DEF':0}

class create_character(object):
    def choose_class(self):
        inp = input("Please choose a class!: ").lower()
        s = ("Knight, Archer, or Mage")
        print(s)
        if inp == 'knight':
            self.stats['STR'] = 15
            self.stats['DEF'] = 15
            print(self.stats)

我目前面临的问题是,当我在 create_character 下引用 self.stats 时,它告诉我特定类没有“self.stats”。如果我尝试 player.self.stats 或 player.stats,它会告诉我同样的事情,即该类没有这些属性。如何从另一个类中引用字典或变量,并更改其属性。此外,当我打印 self.health、self.stats、self.name 或玩家类拥有的任何属性时,它会给我一堆不需要的信息。有没有办法排除多余的信息?

【问题讨论】:

  • 那...没有任何意义。为什么create_character 是一个类?为什么您期望它与恰好在其上方定义的完全不相关的类具有相同的属性?为什么您希望类player 具有您仅在该类的实例上定义的属性? “一堆不需要的信息”究竟是什么意思?我强烈建议您查找并遵循 Python OOP 教程来掌握基础知识。

标签: python python-3.x


【解决方案1】:

我相信这将完成您正在寻找的工作:

class player(object):
    def __init__(self):
        self.health = 100
        self.stats = {'STR': 0,
                     'DEF':0}

def choose_class():
    inp = input("Please choose a class (Knight, Archer, or Mage): ").lower()
    if inp == 'knight':
        # create the player object
        p = player()
        # changes the values for the attributes in the player object
        p.stats['STR'] = 15
        p.stats['DEF'] = 15
        print(p.stats)

# calls the function to choose the class
choose_class()

虽然这不是一个真正好的编码风格,所以我建议遵循 OOP Python 教程。

【讨论】:

    猜你喜欢
    • 2021-08-12
    • 1970-01-01
    • 2018-02-20
    • 2012-09-03
    • 1970-01-01
    • 2011-05-24
    • 2021-08-01
    • 2015-03-24
    • 2023-03-04
    相关资源
    最近更新 更多