Эй все, моя проблема состоит в том, что я пытаюсь выяснить, как получить класс В другом классе.
То, что я делаю, у меня есть класс для Самолета со всей его статистикой относительно того, как быстро она может полететь, как далеко она может пойти, расход топлива, и так далее. Затем у меня есть Класс Полета, который является всеми подробностями о полете: Расстояние, стартовое местоположение и время, конечное местоположение и время, продолжительность, и так далее.
Но я понял, что каждый самолет имеет несколько полетов, итак, почему бы не поместить все полетные данные в класс самолета? Хотя, как, я поместил класс В другой класс, таким образом, я могу назвать что-то вроде этого:
Player1.Airplane5.Flight6.duration = 5 hours
Я несколько сделал это с классом самолета, но когда я иду для сохранения информации (перечисляющий все в текстовый документ), все, что это дает мне, Шестнадцатеричное местоположение данных а не фактических строк.
class Player (object):#Player Class to define variables
'''Player class to define variables'''
def __init__ (self, stock = 0, bank = 200000, fuel = 0, total_flights = 0, total_pax = 0):
self.stock = stock
self.bank = bank
self.fuel = fuel
self.total_flights = total_flights
self.total_pax = total_pax
self.Airplanes = Airplanes
self.flight_list = flight_list
Существует ли способ поместить класс в классе? или я должен буду сделать один супер класс Плеера, который обрабатывает всю информацию, для которой я использую другие классы?
Мне кажется, вы путаете объекты и классы. Класс внутри класса выглядит так:
class Foo(object):
class Bar(object):
pass
>>> foo = Foo()
>>> bar = Foo.Bar()
Но мне кажется, что это не то, что вам нужно. Возможно, вам нужна простая иерархия вместимости:
class Player(object):
def __init__(self, ... airplanes ...) # airplanes is a list of Airplane objects
...
self.airplanes = airplanes
...
class Airplane(object):
def __init__(self, ... flights ...) # flights is a list of Flight objects
...
self.flights = flights
...
class Flight(object):
def __init__(self, ... duration ...)
...
self.duration = duration
...
Тогда вы можете строить и использовать объекты таким образом:
player = Player(...[
Airplane(... [
Flight(...duration=10...),
Flight(...duration=15...),
] ... ),
Airplane(...[
Flight(...duration=20...),
Flight(...duration=11...),
Flight(...duration=25...),
]...),
])
player.airplanes[5].flights[6].duration = 5
Похоже, что вы говорите об агрегации. Каждый экземпляр вашего класса player
может содержать ноль или более экземпляров Airplane
, который, в свою очередь, может содержать ноль или более экземпляров Flight
. Вы можете реализовать это в Python, используя встроенный тип list
, чтобы не именовать переменные числами.
class Flight(object):
def __init__(self, duration):
self.duration = duration
class Airplane(object):
def __init__(self):
self.flights = []
def add_flight(self, duration):
self.flights.append(Flight(duration))
class Player(object):
def __init__ (self, stock = 0, bank = 200000, fuel = 0, total_pax = 0):
self.stock = stock
self.bank = bank
self.fuel = fuel
self.total_pax = total_pax
self.airplanes = []
def add_planes(self):
self.airplanes.append(Airplane())
if __name__ == '__main__':
player = Player()
player.add_planes()
player.airplanes[0].add_flight(5)