1 回答
TA贡献1818条经验 获得超8个赞
我同意@Dennis:if 语句使代码非常易读。以下是我在不使用if. 也许有更好的方法,例如使用format语句而不是“f-strings”,并且正如@Dennis 建议的那样,也许使用类型作为键。
def upload_location(instance, filename):
lookup = dict([
(Story.__name__, lambda instance: f'stories/{instance.id}/cover{extension}'),
(Episode.__name__, lambda instance: f'stories/{instance.story.id}/{instance.index}/cover{extension}'),
(EpisodeSlide.__name__, lambda instance: f'stories/{instance.episode.story.id}/{instance.episode.index}/{instance.id}{extension}')
])
_, extension = os.path.splitext(filename)
loc = lookup[instance.__class__.__name__](instance)
return loc
print(upload_location(e, "hello.txt"))
print(upload_location(es, "hello.txt"))
print(upload_location(s, "hello.txt"))
stories/1/10/cover.txt
stories/1/10/100.txt
stories/1/cover.txt
再说一遍,if 语句比上面的函数要好得多!!
添加回答
举报
