ted*_*toy 3 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()
Run Code Online (Sandbox Code Playgroud)
更改我的代码以摆脱if语句并动态实例化我需要的对象有什么好方法?我希望我可以编写的代码完成与上面相同的代码,但看起来更像是这样:
AnimalVote = get_animalvote_by_type(type)
AnimalVote.user = user
AnimalVote.assign_animal_id(thing_id)
AnimalVote.save()
Run Code Online (Sandbox Code Playgroud)
最简单的翻译是:
types = dict('cat' = CatType, 'dog' = DogType)
newobj = types[type](user = user, cat_id = thing_id)
Run Code Online (Sandbox Code Playgroud)
显然,这取决于采用相同参数的类型.