python:singleton
차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 다음 판 | 이전 판 | ||
| python:singleton [2016/02/01 06:38] – 만듦 rex8312 | python:singleton [2024/03/23 02:42] (현재) – 바깥 편집 127.0.0.1 | ||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| ====== Python: Singleton ====== | ====== Python: Singleton ====== | ||
| - | |||
| - | |||
| - | * http:// | ||
| <code python> | <code python> | ||
| + | # class Singleton(type): | ||
| + | # | ||
| + | # def __call__(cls, | ||
| + | # if cls not in cls._instances: | ||
| + | # | ||
| + | # | ||
| + | | ||
| class Singleton(type): | class Singleton(type): | ||
| - | | + | _instances = {} |
| - | def __call__(cls, | + | |
| - | if cls not in cls._instances: | + | |
| - | cls._instances[cls] = super(Singleton, cls).__call__(*args, | + | |
| - | return cls._instances[cls] | + | |
| - | #Python2 | + | |
| + | # Python2 | ||
| class MyClass(BaseClass): | class MyClass(BaseClass): | ||
| __metaclass__ = Singleton | __metaclass__ = Singleton | ||
| + | pass | ||
| + | | ||
| - | #Python3 | + | # Python3 |
| class MyClass(BaseClass, | class MyClass(BaseClass, | ||
| pass | pass | ||
| + | | ||
| + | |||
| + | # Test | ||
| + | for x in range(5): | ||
| + | MyClass().x = x | ||
| + | print(MyClass().x) | ||
| </ | </ | ||
| + | |||
| + | * https:// | ||
| + | * http:// | ||
| + | |||
python/singleton.1454308695.txt.gz · 마지막으로 수정됨: (바깥 편집)