1

好的,所以我要做的是创建一个函数,该函数将根据类的所有对象共享的特定属性的值来查找对象实例。本质上,我希望 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!")

如果需要更多关于我的询问性质的详细信息,那么:

我所做的本质上是将对象用作扩展字典。我有多个附加到对象的属性,我想搜索它们。我基本上将它用作存储容器,我需要对其进行搜索。

如果有更好的方法来存储对象以外的上述信息,请分享。

我基本上将它用作具有多个键的字典。

4

1 回答 1

2

您可以很容易地做到这一点,方法是拥有一个类属性,该属性是该类的所有实例的列表,并让该类__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
于 2013-06-22T17:49:59.573 回答