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 · 마지막으로 수정됨: (바깥 편집)