【发布时间】:2016-08-02 07:01:28
【问题描述】:
我目前正在复制与此问题类似的内容:python switch by class name?
我有一个 for 循环,它遍历一组对象并按它们的类型将它们排序到几个列表中的一个中。
for obj in list_of_things:
if isinstance(obj, Class1):
class1list.append(obj)
if isinstance(obj, Class2):
class2list.append(obj)
等等。对于其他几个课程。该应用程序类似于 ORM - 每个类的数据将被提取并写入数据库,每个类都有不同的数据要提取。此外,所有 Class1 的实例都必须在 Class2 的任何实例之前由 ORM 处理。
最后,Class1 和 Class2 不是我的 - 它们是我正在使用的 API 的输出,因此我无法按照上一个问题中的建议更改它们(例如,编写 serialize() 方法转储我在每个类中需要的数据)。我向 API 发出一些对象的请求,它向我涌来各种类型的对象,我需要从每个对象中提取不同的数据。
有没有更 Pythonic 的方式来做到这一点?这种方法满足了需求,但它伤害了我的眼睛,我想学习一个更好的方法。我对 Python 还是很陌生。
【问题讨论】:
标签: python serialization duck-typing