我经常发现自己创建了同类对象,通常将它们存储在字典或字典列表中。
a,b,c = MyClass(...), MyClass(...), MyClass(...) my_set = {'a':a,'b':b,'c':c}
在这样的背景下,共同的需求是
从对象的属性或方法返回同类集
{k:k.prop for k in my_set}
, 或者
{k:k.func() for k in my_set}
根据属性或对象方法的输出进行过滤
{k:k.prop for k in my_set if k.prop is blah}
, 或者
{k:k.func() for k in my_set if k.func() is blah}
将前两个需求放在一起
起初,这似乎表明我应该使用数据库。但是,我将不得不放弃使用任意对象作为元素所提供的自由。
id喜欢为此类型的结构创建一个类(如果尚不存在),则可以通过以下方式满足这些需求:
a,b,c = MyClass(...), MyClass(...), MyClass(...)
my_set = {'a':a,'b':b,'c':c}
my_set.prop # fufills first need
my_set.func() # fufills first need
my_set[prop = blah] # fufills second need
my_set[prop= blah].prop.func() # third need
是否存在这样的功能?还是对这个对象的需求是不良设计的结果?
12345678_0001
守候你守候我
肥皂起泡泡
相关分类