【问题标题】:Python .format() KeyError when using class.__dict__使用 class.__dict__ 时的 Python .format() KeyError
【发布时间】:2015-10-29 21:49:05
【问题描述】:

基本上我定义了一个类,我试图在打印语句中显示它的属性编辑:

class Player(object):
    """ Default Class for the player """
    def __init__(self, name):
        self.name = name
        self.class_type = '[CLASS]'
        self.level = 1
        self.health = 10
        self.maxhealth = self.level * 10
        self.attack = 0
        self.defence = 0
        self.experience = 0
        self.weapon = ''
        self.shield = ''
        self.player_y = 9
        self.player_x = 39

print('LV: {level} EXP: {exp} HP: {health}/' +
      '{maxhealth}'.format(**char))

我做错了吗?我只是想找到一种更有效的方式来显示类的属性,而不是做......

print(character.name + ': Weight: ' + character.weight + ' Age: ' +
      character.age + '...')

有什么想法吗?

【问题讨论】:

  • 你在__init__中忘记了self
  • self 表示 self.name = name 等,因为分配变量的方式仅限于 __init__ 方法的范围,而不是对象本身的实例。
  • @user3100115 你说得对,我在这里忘记了,但我在我的实际源代码中有它,这对我来说太匆忙了。
  • @Voks - 请将您的代码复制粘贴到您的问题中。请不要在您的问题中重新输入、总结或编写新代码。请复制粘贴您的实际代码以及您的实际错误消息。

标签: python string class format keyerror


【解决方案1】:

您忘记在您的Player.__init__ 函数中使用self.,并且您忘记在您对str.format 的调用中使用**

这是工作代码:

class Player(object):
    def __init__(self, name):
        self.name = name
        self.age = 125
        self.height = 72
        self.weight = 154
        self.sex = 'Male'

character = Player('NAME')

print('{name} {height} {weight} {sex}'.format(**character.__dict__))

【讨论】:

  • 谢谢,我的问题是我在尝试中使用了 ** 但没有同时使用 .__dict__ 。感谢您的帮助。
猜你喜欢
  • 2018-10-10
  • 2014-01-07
  • 2020-10-24
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 2012-11-15
  • 2011-06-20
相关资源
最近更新 更多