簡體   English   中英

如何返回基於屬性值排序的類對象列表

[英]How to return list of class objects sorted based on attribute value

我正在創建一個名為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) num_of_objects找到。 (請注意,由於您正在變異而不是重新分配games對象,因此您可以通過self直接引用它。)

現在,您的實際方法需要是 classmethods,它接受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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM