gpt4 book ai didi

python - 存储在字典中时评估生成字符串的语句 'later'

转载 作者:太空宇宙 更新时间:2023-11-04 09:05:30 26 4
gpt4 key购买 nike

我有一个 AI 例程,可以将各种数据存储为 Memory 对象。 Memory 对象根据传递给构造函数的“内存类型”具有不同的参数(回想起来,每种类型的内存确实应该是 Memory 的子类,但是目前这并不重要)。

我需要为 Memory-s 设置一个 __str__() 方法。在另一种语言中,我可能会这样做:

if self.memtype == "Price":
return self.good+" is worth "+self.price+" at "+self.location
elif self.memtype == "Wormhole":
return self.fromsys+" has a wormhole to "+self.tosys
...

但是执行此类操作的 Pythonic(且快速)方法是使用字典。但问题是,这些字符串在返回之前需要插入值。我想这可以用 lambda 表达式来完成,但我觉得这有点不优雅且过于复杂。有没有更好的方法(突然想到 str.format()...)?

最佳答案

是的,使用 str.format() :

formats = {
'Price': '{0.good} is worth {0.price} at {0.location}',
'Wormhole': '{0.fromsys} has a wormhole to {0.tosys}',
}

return formats[self.memtype].format(self)

通过将 self 作为第一个位置参数传递,您可以在 {...} 格式占位符中处理 self 上的任何属性.

您也可以对值应用更详细的格式(例如浮点精度、填充、对齐等),请参阅 formatting syntax .

演示:

>>> class Demo():
... good = 'Spice'
... price = 10
... location = 'Betazed'
... fromsys = 'Arrakis'
... tosys = 'Endor'
...
>>> formats = {
... 'Price': '{0.good} is worth {0.price} at {0.location}',
... 'Wormhole': '{0.fromsys} has a wormhole to {0.tosys}',
... }
>>> formats['Price'].format(Demo())
'Spice is worth 10 at Betazed'
>>> formats['Wormhole'].format(Demo())
'Arrakis has a wormhole to Endor'

关于python - 存储在字典中时评估生成字符串的语句 'later',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21078816/

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