往函数中传其他类实例的这种操作规范吗?

2017-06-19 11:26:29 +08:00
 tcitry

比如 Django 中要修改个数据 model 的删除状态。

def delete_instance(model_obj):
    model_obj.deleted = True

类似这种写法,model_obj 当然是 Django 中一个 models.Model 的类实例。 我的意见是肯定不能这么写,一来不安全,这个 model_obj 可以进行 model 的所有操作。二来在其他地方调用的时候还需要先 get 到这个 model_obj,复用贼麻烦。但还是说不过同事,哎。

1785 次点击
所在节点    Python
6 条回复
kanchi240
2017-06-19 13:15:59 +08:00
如果不这么弄,函数参数太多怎么办,楼主给个解决方案
pixstone
2017-06-19 13:21:34 +08:00
def delete_instance(model_obj): 这个方法直接写在 model 里。
Book.delete_instance(id) ???
tcitry
2017-06-19 14:41:26 +08:00
@kanchi240 **kwargs
kanchi240
2017-06-19 18:34:27 +08:00
@tcitry 哦,那又不想用**kwargs 呢,就是想搞的有点面向对象的意思。。
chairuosen
2017-06-19 18:40:04 +08:00
这是写在工具类里,写在对象上的话,如果这个动作要干一些别的事情,就会依赖倒置。
jswh
2017-06-19 18:42:11 +08:00
这不面向对象

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/369490

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX