gpt4 book ai didi

python - 如何返回根据属性值排序的类对象列表

转载 作者:太空宇宙 更新时间:2023-11-04 04:20:51 24 4
gpt4 key购买 nike

我正在创建一个名为 Game 的类。该类的对象具有以下属性:

  • 姓名
  • 类型
  • 发布日期

这是类:

class Game:


num_of_objects = 0

def __init__(self, name, genre, year=1990, month=1, day=1):
"""
Class Constructure: Returns a Game object whose parameters are:
name: String
genre: String
data: YYYY-MM-DD
"""
self.name = name
self.genre = genre
self.year = year
self.month = month
self.day = day
self.release_date = self.year + '-' + self.month + '-' + self.day
Game.num_of_objects += 1

def __repr__(self):
return str(self)

def games_by_year():
print [Game.genre for Game in x]

def games_by_genre():
pass

def games_starting_with():
pass

我想创建一个类方法,它按类型返回游戏列表,另一个方法按年份返回游戏列表。这种情况下的游戏只是类对象:

Halo = Game('Halo', 'shooter', '2019', '11', '12')

还有,有没有更好的方法来处理日期?我想采用 YYYY-MM-DD 格式

最佳答案

创建游戏时,您需要将游戏实际存储在某个地方。类级列表会起作用:

class Game:

num_of_objects = 0
games = []

def __init__(self, name, genre, year=1990, month=1, day=1):
...
self.games.append(self)

您可能可以删除 num_of_objects 计数器,因为它很容易从 len(self.games) 中找到。 (请注意,由于您正在改变而不是重新分配 games 对象,因此您可以通过 self 直接引用它。)

现在,您的实际方法需要是类方法,它接受 cls 作为第一个参数:

@classmethod
def games_by_year(cls):
return sorted(cls.games, key=lambda g: g.year)

@classmethod
def games_by_genre(cls):
return sorted(cls.games, key=lambda g: g.genre)

关于python - 如何返回根据属性值排序的类对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54506724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com