【发布时间】:2017-05-03 20:12:10
【问题描述】:
是否可以编写一个基类方法来对类对象列表进行排序,存储为静态类变量,在子类中,通过字典中的键,即使用 sort 或 sorted 的类的属性还是需要写更精细的排序方法?
我是一个 python 菜鸟,我尝试使用 sort & sorted 编写“my_sorter”方法,尝试使用 lambda 键定义、itemgetter 和 attrgetter,但不确定我是否在访问语法上失败这些混合的嵌套结构,或者如果不编写更复杂的排序例程来故意在列表中移动条目是不可能的。
请注意,每个子类都有一个名为“mindex”的静态变量,用于标识其属性字典的“主键”(即排序依据的唯一值)。 my_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,
}
【问题讨论】:
-
是否可以编写一个基类方法来对类对象列表进行排序,存储为静态类变量,在子类中,通过字典中的键,即使用 sort 或 sorted 的类的属性,还是需要编写更复杂的排序方法? 再次请:O ?!
-
您能否提供一个示例,说明您希望这种方法能做什么?
-
Person和Meeting将以这种方式共享同一个storage列表。这真的是你想要发生的事情吗? (您可能根本不应该将storage设为类属性;它是可变的全局状态,可能不是这些类的任何责任。另外,您有花引号。这会导致问题。)
标签: python class sorting class-method