gpt4 book ai didi

python - 列出多态继承选择并根据该选择创建实例

转载 作者:行者123 更新时间:2023-11-30 23:11:39 24 4
gpt4 key购买 nike

我有一个连接表继承,例如 Animal、Cat 和 Dog。我想允许用户创建一个新的动物。

有没有办法将所有类型(猫、狗)放入用户列表中?有没有办法接受用户的选择并从中创建一个实例? (我不想硬编码 if choice == "cat": Cat()。)

最佳答案

SQLAlchemy 跟踪父模型的多态子模型。使用inspectAnimal 模型上找到 mapping of polymorphic identities .

>>> from sqlalchemy import inspect
>>> i = inspect(Animal)
>>> i.polymorphic_map
{'cat': <Mapper at 0x7fb4c7a8b390; Cat>,
'dog': <Mapper at 0x7fb4c7a98240; Dog>}

您可以使用class_从映射器获取类。属性。

>>> i.polymorphic_map['cat'].class_
__main__.Cat

有了这两个部分,您现在可以获得要呈现给用户的类型列表,并且可以根据所选值实例化模型。

types = inspect(Animal).polymorphic_map.keys()
user_input = 'cat'
new_cat = inspect(Animal).polymorphic_map[user_input]()

如果层次结构有更多级别,例如 CalicoCatHairlessCat,您可以使用 polymorphic_iterator查看整个层次结构。

关于python - 列出多态继承选择并根据该选择创建实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30133127/

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