如何解决一系列任务的Python模式
我正在尝试在汽车对象上创建一条简单的管道
- 制造汽车车轮
- 为汽车添加刹车
- 存放汽车
我为此任务开发的代码是:
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'}
。我是否可以使用一种模式来生成car和brakes
属性的JSON并封装上述管道?我可以创建一个名为CarWithBrakes
的新类,例如:
class CarWithBrakes(Car):
def __init__(self,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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。