假设我写一个 service 类,里面所有增删改查方法都用类方法来写,和写成实例方法然后使用单例作为对象来调用,两者在设计或者在内存调用上有什么优劣之分吗
class Service:
model = OrmModel
@classmethod
def create(cls, data):
cls.mode.create(data)
class Service:
model = OrmModel
def create(self, data):
self.mode.create(data)
1
cominghome 2021-01-07 08:11:24 +08:00
不懂,但是对于写惯了 django 的我来说,我喜欢第二种
|
2
abersheeran 2021-01-07 09:28:52 +08:00
第一种。单例对象能少就少用吧,实践的时候发现,你可能会记得这个对象是个单例,但是你很难搞清楚在哪第一次初始化的。所以不如直接用类,利用元类初始化。这样能确定,在 class 定义加载完成的时候,它就已经初始化了。
|
3
xiaoqiao24 2021-01-07 09:40:52 +08:00
不同场景吧。
第一种我觉得适合那种项目不大,操作的 orm 对象只有一个的情况。这样全项目都用这个 service 类。 但是如果项目比较大,需要连接跨实例的多个 db,那么就需要每个进行单独配置,防止类混用。 |
4
XIVN1987 2021-01-07 09:47:08 +08:00
我觉得第一种用法和第二种用法的主要区别是:第二种用法强制调用__init__方法,这样类的设计者可以在__init__中做各种初始化和环境检查
|
5
unknowfly OP 谢谢楼上各位,想了下还是实例化吧,3L4L 说的场景也有,决定先不纠结了
|