按类属性字典键对继承的类实例列表进行排序

2024-03-29 11:06:01 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以编写一个基类方法来排序子类中作为静态类变量存储的类对象列表(通过字典中的键,即使用sort或sorted的类的属性),或者是否需要编写一个更详细的排序方法?你知道吗

我是一个python noob,我尝试使用sort&sorted编写“my_sorter”方法,尝试lambda键定义、itemgetter和attrgetter,不确定是否在访问这些混合嵌套结构的语法方面失败,或者如果不编写更详细的排序例程就无法访问这些结构在列表中移动条目。你知道吗

请注意,每个子类都有一个名为“mindex”的静态变量,用于标识其属性字典的“主键”(即排序依据的唯一值)。 my\u sorter()方法是什么样的?你知道吗

class Engine():
    storage = []

    @classmethod
    def my_sorter(cls):
        #sort cls.storage by cls.mindex

class Person(Engine):
    mindex = 'Name'

    def __init__(self, name):
        self.attributes = {
            'Name' : name,
        }

class Meeting (Engine):
    mindex = 'Date'

    def __init__(self, date):
        self.attributes = {
            'Date' : date,
        }

Tags: 方法self列表字典排序mydef静态
1条回答
网友
1楼 · 发布于 2024-03-29 11:06:01

您不会在任何地方显示对象在storage列表中是如何结束的,但是假设您已经正确地工作了(并且没有意外地在Engine.storage中混合使用不同子类的对象),排序应该非常简单。你知道吗

@classmethod
def my_sorter(cls):
    return sorted(cls.storage, key=lambda obj: obj.attributes[cls.mindex])

我有点怀疑你的PersonMeeting类是否应该是Engine的子类。对我来说这不像是一种关系。如果我知道整个项目的设计,也许会更有意义。你知道吗

相关问题 更多 >