gpt4 book ai didi

python - 格式化 self,这是一个字典

转载 作者:太空宇宙 更新时间:2023-11-03 12:33:57 24 4
gpt4 key购买 nike

如何使 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__() 提取它需要的属性。

如何让它发挥作用?

最佳答案

不,您必须使用 **self 并支持更多映射方法。

但是,您最好改用对属性访问的格式支持:

    def __str__(self):
return """
Commit {0.number} {0.sha}
Message {0.message}
Identity {0.identity}
""".format(self)

现在它将使用属性访问从 .format() 的第一个位置参数中查找 numbermessage 等,这是self

关于python - 格式化 self,这是一个字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13933160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com