gpt4 book ai didi

python - 在Python中创建一组命名对象的最佳方法

转载 作者:行者123 更新时间:2023-12-01 08:52:19 25 4
gpt4 key购买 nike

我发现自己经常创建命名对象集,其中每个对象都有唯一的名称。我将它们实现为 dict,其键源自 myObject.name。但是将名称保留在两个地方感觉有点笨拙。

我的典型方法如下:

class NamedObject(object):
ITEMS = {}

def __init__(self, name, ...other arguments...):
self.name = name
...more initialization...

@classmethod
def create_named_object(cls, name, ...other arguments...):
obj = cls(name, ...other arguments...)
cls.ITEMS[name] = obj

@classmethod
def find_object_by_name(cls, name):
return cls.ITEMS.get(name, None)

@classmethod
def filter_objects(cls, predicate):
return [e for e in cls.ITEMS.values() if predicate(e)]

我知道我可以创建一个通用类来处理这个问题,但是有没有更自然的 Pythonic 方法来做到这一点?

最佳答案

标准库中没有更通用的支持,没有,也没有比使用字典更“Pythonic”的方法来实现这一点。

您正在做的是提供 lookup table index ,并且索引通常需要一些重复的数据。您正在用内存换取访问速度。但索引是特定于用例的,要么通过映射来简单实现,要么对于应用程序来说过于特定,以至于无法推广到将其添加到语言库中有意义的级别。

至少在 Python 中,名称的字符串值实际上并不重复;您只需添加更多引用即可;一次来自实例,另一次来自 ITEMS 字典。

关于python - 在Python中创建一组命名对象的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53032225/

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