python - 如何在 django/python 中动态创建对象?

标签 python django dynamic

在我的代码中,我有很多这样的 if/elif 语句:

if type == "cat":
    vote = VoteCat (
        user = user,
        cat_id = thing_id )
    vote.save()
elif type == "dog":
    vote = VoteDog (
        user = user,
        dog_id = thing_id )
    vote.save()

更改我的代码以摆脱 if 语句并动态实例化我需要的对象的好方法是什么?我希望我可以编写的代码将实现与上面相同的功能,但看起来更像这样:

AnimalVote = get_animalvote_by_type(type)
AnimalVote.user = user
AnimalVote.assign_animal_id(thing_id)
AnimalVote.save()

最佳答案

最简单的翻译是:

types = dict('cat' = CatType, 'dog' = DogType)
newobj = types[type](user = user, cat_id = thing_id)

显然,这依赖于采用相同参数的类型。

关于python - 如何在 django/python 中动态创建对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14226292/

相关文章:

qt - 如何在Qt中正确链接共享的Linux库?

Python 描述符 __get__ 和 __set__

php - 正则表达式的可变长度lookbehind-assertion替代方案

django - 向管理界面上的 Django 内联对象添加自定义操作

python - 需要 mysqlclient 1.3.3 或更新版本;你有 0.7.11.None

html - 绝对容器中的最大宽度段落

python - 创建 "Flashcard"词汇程序

python - Dask 数据框中的多个聚合用户定义函数

javascript - PyCharm:src 目录下的 JavaScript 文件被锁定

c - 使用指针的二维数组