gpt4 book ai didi

用于任务管道的 Python 模式

转载 作者:行者123 更新时间:2023-12-03 20:49:58 24 4
gpt4 key购买 nike

我正在尝试在汽车对象上创建一个简单的管道

  • 打造汽车车轮
  • 给汽车加刹车
  • 存车

  • 我为此任务开发的代码是:
    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)
    哪个打印:
    {'wheels': 'wheels'}
    {'wheels': 'wheels'}
    ('car', <__main__.Car object at 0x7f40a86bdcf8>, 'stored')
    线路 print(car_with_brakes.toJson())版画 {'wheels': 'wheels'} .有没有我可以使用的模式来为汽车和 brakes 生成 JSON属性并封装上面描述的管道?我可以创建一个名为 CarWithBrakes 的新类如 :
    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()
    打印:
    {'wheels': 'wheels', 'brakes': 'new high qualiy brakes'}
    但这对于一个看似简单的问题来说似乎太过分了?

    最佳答案

    您有多种选择。
    一是调整build_brakes功能:

    # note brakes x breaks
    def build_brakes(car) :
    car.brakes = 'new high quality brakes'
    car.jsonTransform['breaks'] = car.brakes
    return car
    另一个(IMO 更清洁)是修改 toJson方法:
    # 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

    关于用于任务管道的 Python 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63394284/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com