我想返回自定义类中存储在列表中的所有值,类似于在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()
?
我不是要查找列表信息,因为我必须多次复制粘贴。
答案 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]