类方法要不要设定为静态方法问题

2019-04-15 14:53:40 +08:00
 NeverBelieveMe
负责业务处理的 Service 类的方法,比如生成订单 create_order()方法,定义的时候要不要定义成 @staticmethod 静态方法?不设置静态方法,通过 Service().create_order(·······)的方式也可以调用。这样有什么问题么?
1492 次点击
所在节点    Python
2 条回复
qiyuey
2019-04-15 15:00:48 +08:00
Java 里都是 IOC 的单例 Bean,一般不定义为 Static 的,Python 也应该是类似的吧
xxx777
2019-04-17 17:15:45 +08:00
```
class BaseService:
model: Model = None
_service = dict()

@classmethod
def instance(cls):
"""Method instance
:return: cls
"""
instance = cls._service.get(cls.__name__, None)
if not instance:
instance = cls.__new__(cls)
cls._service.setdefault(cls.__name__, instance)
return instance
```
可以在基础类写一个 instance 方法,调用的时候 UserService.instance().find_user_by_id() 这样调用是单例
Service().create_order(·······) 这种每次都会创建新对象的

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

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

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

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

© 2021 V2EX