4 votes

Modèle Python pour un pipeline de tâches

Je tente de créer un simple pipeline sur un objet voiture qui est

  1. construire les roues de la voiture
  2. ajouter des freins à la voiture
  3. stocker la voiture

Le code que j'ai développé pour cette tâche est le suivant :

def build_brakes(car) :
    car.brakes = 'new high quality brakes'
    return car

class Car :
    def __init__(self , wheels):
        self.wheels = wheels
        self.jsonTransform = {}
        self.jsonTransform['wheels'] = wheels

    def toJson(self):
        return self.jsonTransform

def store(car):
    return 'car' , car , 'stored'

c = Car("wheels")
print(c.toJson())

car_with_brakes = build_brakes(c)
print(car_with_brakes.toJson())

stored = store(c)
print(stored)

Qui imprime :

{'wheels': 'wheels'}
{'wheels': 'wheels'}
('car', <__main__.Car object at 0x7f40a86bdcf8>, 'stored')

La ligne print(car_with_brakes.toJson()) imprime {'wheels': 'wheels'} . Existe-t-il un modèle que je peux utiliser pour générer le JSON de la voiture et de l'ordinateur ? brakes et encapsuler le pipeline décrit ci-dessus ? Je pourrais créer une nouvelle classe appelée CarWithBrakes tels que :

class CarWithBrakes(Car):

    def __init__(self , car, brakes):
        self.car = car
        self.brakes = brakes

    def toJson(self):
        self.jsonTransform = {}
        self.jsonTransform['wheels'] = self.car.wheels
        self.jsonTransform['brakes'] = self.car.brakes
        return self.jsonTransform

car_with_brakes = CarWithBrakes(c , 'new high qualiy brakes')

car_with_brakes.toJson()

qui imprime :

{'wheels': 'wheels', 'brakes': 'new high qualiy brakes'}

Mais cela semble trop pour un problème apparemment simple ?

0voto

Jan Stránský Points 1602

Vous avez plusieurs possibilités.

La première consiste à ajuster build_brakes fonction :

# note brakes x breaks
def build_brakes(car) :
    car.brakes = 'new high quality brakes'
    car.jsonTransform['breaks'] = car.brakes
    return car

Une autre solution (plus propre, selon l'OMI) consiste à modifier les paramètres suivants toJson méthode :

# note brakes x breaks
class Car :
    def __init__(self , wheels):
        self.wheels = wheels
    def toJson(self):
        ret = {'wheels':self.wheels}
        if hasattr(self,"brakes"):
            ret['breaks'] = self.brakes
        return ret

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X