小编典典

Python 2.6:类内的类?

python

大家好,我的问题是我想弄清楚如何在另一个班级内上一堂课。

我正在做的是为一架飞机上一堂课,其中包含有关其飞行速度,飞行距离,油耗等的所有统计信息。然后,我有一个飞行班级,其中包含有关航班的所有详细信息:距离,起始位置和时间,结束位置和时间,持续时间等。

但是我意识到每架飞机都有多次飞行,那么为什么不将所有飞行数据都放入飞机类别呢?虽然我如何将一个类放到另一个类中,所以我可以这样称呼:

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

有没有办法把一个班级放进一个班级?还是我需要制作一个超级播放器类来处理所有使用其他类的即时信息?


阅读 164

收藏
2021-01-20

共1个答案

小编典典

我认为您在混淆对象和类。一个类中的一个类如下所示:

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
2021-01-20