好的,所以我要做的是创建一个函数,它将根据类的所有对象共享的特定属性的值来查找对象实例。本质上,我希望Python搜索类的每个实例的特定属性,并检查它与另一个值,如果它找到匹配来做一些东西。在伪代码中:
for each instance of Class:
if search_keyword is in instance.attribute:
do some stuff
found = True
if found is True:
tell_user("Found instance!")
如果我的询问性质需要更多细节,那么:
我正在做的主要是将对象用作扩展字典。我有多个属性附加到对象,我想搜索它们。我基本上将它用作存储容器,我需要搜索它。
如果有更好的方法存储除对象以外的所述信息,请分享。
我基本上将它用作具有多个键的字典。
答案 0 :(得分:1)
你可以通过一个class属性来轻松地做到这一点,该属性是所创建的该类的所有实例的列表,并且让该类的每个实例的__init__
将实例添加到列表中。
class Foo(object):
list_of_all_foos = []
def __init__(self):
Foo.list_of_all_foos.append(self)
然后搜索您创建的所有Foo
个实例:
for foo_instance in Foo.list_of_all_foos:
if search_keyword is in foo_instance.attribute:
do some stuff
found = True
if found is True:
tell_user("Found instance!")
或者,使用类方法执行此操作,这可能更具惯用性:
class Foo(object):
list_of_all_foos = []
@classmethod
def create_foo_and_add_to_list(cls, *args, **kwargs):
new_foo = cls(*args, **kwargs)
Foo.list_of_all_foos.append(new_foo)
return new_foo