Python .format() 使用 class.__dict__ 时出现 KeyError

标签 python string class format keyerror

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

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 + '...')

有什么想法吗?

最佳答案

您忘记在 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__))

关于Python .format() 使用 class.__dict__ 时出现 KeyError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33425222/

相关文章:

python - pandas IndexSlice 不接受整数列表

python - 从一个字符串和一个字符串列表创建一个元组

C#。解析并在字符串中找到一些单词

android - 使用非 Activity 类的 Intent

c# - 在 list<> 中添加一个类并再次复制该类并再次添加并进行一些修改

python - 多处理时如何让 Python 尊重可迭代字段?

python - Python 什么时候为空列表创建新的列表对象?

java - 查找字符串匹配位置?

javascript获取斜杠之间的字符

php - 什么应该是 php 中类的实例?