从列表中的类返回项目

时间:2020-08-18 07:17:13

标签: python class

我想返回自定义类中存储在列表中的所有值,类似于在networkx中使用node.items()可以完成的操作:

class CustomClass:
    def __init__(self):
        self.idx = 1
        self.value = 5

class_list = [c1, c2, c3, c4]

clas_values = class_list.values()

class_values -> [(idx_c1, value_c1), (idx_c2, value_c2), .....] 

我想我需要做的是使用装饰器 @classmethod 并在我的values()中编写一个函数CustomClass()

我不是要查找列表信息,因为我必须多次复制粘贴。

1 个答案:

答案 0 :(得分:1)

如果您确实要使用建议的语法,则必须编写自己的集合,这是一个示例:

class CustomClass:
    def __init__(self, i):
        self.idx = i
        self.value = 5

class CustomList(list):
    def values(self):
        return [(c.idx, c.value) for c in self]

class_list = CustomList([CustomClass(3), CustomClass(4)])

clas_values = class_list.values()
print(clas_values)

打印 [(3, 5), (4, 5)]

否则,正如已经建议的那样,您可以简单地使用一个辅助函数,例如:

def values(lst):
    return [(c.idx, c.value) for c in lst]