Как структурированы классы, вам нужно будет создавать объекты в обратном порядке. Соответствующий фрагмент кода, который должен вам помочь, находится здесь:
# 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
: я думаю, что это более характерно для того, чтобы быть одним объектом .