对这个设计决策背后的推理有什么洞察力吗?在我看来,让obj.save()返回一些东西,只有好处(比如方法链),而且没有缺点。
发布于 2012-06-07 17:33:35
一般认为Python中的良好实践是拥有主要影响现有对象的函数,而不是返回自己。例如,sorted(yourlist)返回一个排序列表,但是yourlist.sort()对列表进行了适当的排序,不返回任何内容。
在一行上执行带有副作用的多个操作(相对于关注返回值的无副作用函数)并不是很好的实践。代码在行数方面将更加紧凑,但由于重要的副作用可能被隐藏在链的中间,所以很难读懂。如果要使用方法链接,请在链的开头使用没有副作用的函数,然后在结束时使用一个具有副作用的函数(如.save() )。
换句话说,在方法链中,链的开头是输入,链的中间是输入(沿着树导航、排序输入、更改字符串的情况等),而链的末尾是处理副作用的功能部分。如果你把方法和副作用埋在链的中间,那么你的方法链到底做了什么就不清楚了。
发布于 2015-05-06 13:49:28
发布于 2019-11-23 23:12:59
由于这是搜索"django返回保存的对象“时获得的第一个结果,因此,如果您仍然希望返回保存的对象,而不是使用:
ExampleModel(title=title).save()它不返回任何内容,您可以使用:
saved_instance = ExampleModel.objects.create(title=title)这是因为ExampleModel.objects是一个模型管理器,而不是类的一个实例,所以它不会返回自己。
https://stackoverflow.com/questions/10936737
复制相似问题