【发布时间】:2021-08-02 05:13:32
【问题描述】:
我有这样的课:
from __future__ import annotations
import os
from dataclasses import dataclass
@dataclass(frozen=True)
class Config:
name: str
age: str
@staticmethod
def init() -> Config:
return Config(
name=...
age=...
)
我想确保 init 方法总是返回相同的 Config 实例。
我可以通过这样做来实现这一点:
@dataclass(frozen=True)
class Config:
name: str
age: str
@staticmethod
def init() -> Config:
if not _private_instance:
global _private_instance = Config(
name=...
age=...
)
return _private_instance
_private_instance: Optional[Config] = None
But I am wondering if there is a more Pythonic way of doing this. Thanks
【问题讨论】:
-
这能回答你的问题吗? Creating a singleton in Python
-
你的方法没有错。我想说,像这样的单例模式并非没有它的批评者......而且它在 Python 中并不是很常见
-
@quamrana - 感谢您的链接。我在发布之前通读了该答案。这个问题真的不适合我的问题。我主要对如何在使用
@dataclass时执行此操作感兴趣。
标签: python singleton python-dataclasses