我使用的是python documentation和this SO answer以及this,但是我在使用getattr时得到了一个property对象指针,我无法获取或打印我要查找的值。在
class DefaultSettings():
"""This contains default game settings."""
def __init__(self):
"""Default settings"""
self.Keyboard = namedtuple('Keyboard', ['gas', 'reverse', 'sbreak', 'ebreak', 'left', 'right'])
self.Keyboard(gas = 'WKEY', reverse = 'SKEY', sbreak = 'SKEY', ebreak = 'SPACEKEY', left = 'AKEY', right = 'DKEY')
@property
def keyboard(self):
return [getattr(self.Keyboard, key) for key in self.Keyboard._fields]
settings = DefaultSettings()
print("keyboard 1: ",settings.keyboard)
print("Keyboard 2: ",settings.Keyboard)
print("keyboard 3: ",settings.Keyboard._fields)
print("Keyboard 4: ", DefaultSettings.keyboard.__get__)
print("Keyboard 5: ", DefaultSettings.keyboard.__get__(settings, DefaultSettings))
for key in settings.Keyboard._fields:
print(getattr(settings.Keyboard, key))
以及输出:
^{pr2}$
问题出在您的
__init__
方法中:正如the doc of namedtuple所说:
因此,在},在下一行中,您将创建一个新的
^{pr2}$__init__
方法的第一行中,您将初始化一个新的class
,并将其赋值给it字段{instance
类self.Keyboard
,但将其分配到任何地方,self.Keyboard
仍然是一个类对象。所以下面的代码所做的是迭代/打印class
的属性和方法,而不是实例。我想你想要的可能是:然后你会得到你想要的值。在
相关问题 更多 >
编程相关推荐