0

プロパティを持つオブジェクトがいくつかあります

class my_object:
    def __init__(self, type, name):
        self.type = type
        self.name = name

そして、異なる値typeを持つ多くのオブジェクトを含むリスト。name

私が必要としているのは、次のようなことを行う理解です。

if my_object.type == 'type 1' in object_list:
    object_list.remove(all objects with name == 'some_name')
4

4 に答える 4

2

私はあなたが探していると思います:

object_list = filter(lambda x: x.name != 'some_name', object_list)
于 2013-04-29T17:13:18.567 に答える
1

必要なものは次のとおりです。

if any(obj.type == 'type 1' for obj in object_list):
    object_list = [obj for obj in object_list if obj.name != 'some_name']
于 2013-04-29T17:11:55.090 に答える
0
if hasattr(my_object,"some_attribute") : doSomething()

あなたの場合、私はあなたが望むと思いますが

filter(lambda x:not hasattr(x,"name") or x.name != "some_name",my_list_of_objects)
于 2013-04-29T17:11:46.200 に答える
0

あなたがすることができます:

def remove_objects(obj_list,*args,**kwargs):
    for n_count,node in enumerate(obj_list[::]):
        del_node=False
        for k,v in kwargs.items():
            if hasattr(node,str(k)):
                if getattr(node,str(k))==v:
                    del_node=True
                    break
        if del_node:
            del obj_list[n_count]

そして、次のように使用します。

class HelloWorld(object):
    lol="haha"
my_list_of_objects=[HelloWorld for x in range(10)]
remove_objects(my_list_of_objects,lol="haha")
于 2013-04-29T17:18:42.797 に答える