如何在这种情况下让
如果我尝试访问单个属性,则可以这样:
例如,它可以工作。但是,如果我直接打印(print)
format(self)
起作用?class Commit:
number = None
sha = None
message = None
identity = None
def __init__(self, raw, number):
r = raw.commits[number]
self.number = number
self.sha = r['sha']
self.message = r['message']
self.identity = raw.identities[r['identity']]
def __str__(self):
return """
Commit {number} {sha}
Message {message}
Identity {identity}
""".format(self)
def __getitem__(self, attr):
return getattr(self, attr)
def __contains__(self, attr):
return hasattr(self, attr)
如果我尝试访问单个属性,则可以这样:
c = Commit(raw, 170)
print(c['sha'])
例如,它可以工作。但是,如果我直接打印(print)
c
,它会显示:
KeyError: 'number'
我本来希望format()
通过__getitem__()
获取它所需的属性。
如何让它工作?
identity
是一个字典,而我想要放入某些元素怎么办?下面这行代码是不起作用的:Identity: {0.identity['author_name']} <{0.identity['author_email']}>
- Flaviusformat()
不理解引号,请尝试使用{0.identity[author_name]}
。 - SingleNegationElimination