Объекты создания объектов Python в списках объектов в списках - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь организовать данные, которые становятся все более конкретными, и я не уверен, как и когда инициализировать определенные объекты.

История имеет список лет. Годы имеет список времен года. Времена года есть список месяцев.

Вот мои определения классов

class History:
    def __init__(self):
        self.years = []

    def add_year(self, year):
        self.years.append(year)

class Years:
    def __init__(self, number):
        self.number = number
        self.seasons = []

    def add_season(self, season):
        self.seasons.append(season)

class Seasons:
    def __init__(self, name, day):
        self.name = name
        self.date = day
        self.months = []

    def add_month(self, month)
        self.months.append(month)

class Month:
    def__init__(self, name)
    self.name = name

#initialize History
h = History()

year = ["2015", "2016", "2017", "2018"]

for x in year:
    #add each year to history years[] list (does this also create year objects?)
    h.add_year(x)

    #add each season to the seasons[] list(does this in turn create my seasons objects?)

    h.x.add_season("fall", "265")
    h.x.add_season("spring","81")

    #add months to months[] list in season class
    h.x.fall.add_month("September")
    h.x.fall.add_month("October")

1 Ответ

0 голосов
/ 30 октября 2018

Как структурированы классы, вам нужно будет создавать объекты в обратном порядке. Соответствующий фрагмент кода, который должен вам помочь, находится здесь:

# Initialize history
h = History()

x = "2018"
# let's start with a year object first
new_year = Year(x)

# we need a new season: let's create it
new_season = Season("fall", "265")

# a season needs months: we create them as we add them
new_season.add_month(Month("September"))
new_season.add_month(Month("October"))

# Now you have a complete season object: add it to the year
new_year.add_season(new_season)

# Now you have a complete year: add it to history
h.add_year(new_year)

Это может стать довольно запутанным, но может работать. Я предлагаю проверить, как вы планируете кормить эту «машину» для создания History, а затем обернуть некоторые из них в класс Year или в какую-либо другую функцию.

Еще одна важная часть проекта - это то, как вы планируете использовать History, как только будете готовы, поскольку это будет диктовать некоторые структуры данных, а не другие.

Примечание: я предпочитаю единичные имена для классов, поэтому Years, Seasons и Months стали Year, Season и Month: я думаю, что это более характерно для того, чтобы быть одним объектом .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...