# coding = utf-8
import sys
# 1. Sigleton
# 1.1 use decrators
def sigleton(cls, *args, **kwargs):
instance = {}
def _get_instance():
if cls not in instance:
instance[cls] = cls(*args, **kwargs)
return instance[cls]
return _get_instance
# test
@sigleton
class BaseClass(object):
pass
a1 = BaseClass()
print a1
a2 = BaseClass()
print a2
# 1.2 use __new__
class sigleton2(object):
def __new__(cls, *args, **kwargs):
if not hasattr(cls, '__instance__'):
orig = super(sigleton2, cls)
cls.__instance__ = orig.__new__(cls, *args, **kwargs)
return cls.__instance__
"""
class C(B):
def meth(self, arg):
super(C, self).meth(arg)
"""
# test
b1 = sigleton2()
b2 = sigleton2()
print 'b1=b2?', b1 is b2
# 2. strategy
class StrategyOne(object):
@classmethod
def operation(cls):
print 'operation in StrategyOne'
class StrategyTwo(object):
@classmethod
def operation(cls):
print 'operation in StrategyTwo'
class Strategy(object):
def __init__(self, contex, StrategyOne, StrategyTwo):
self.contex = contex
self.StrategyOne = StrategyOne
self.StrategyTwo = StrategyTwo
def operation(self):
if self.contex == 'contex_for_one':
self.StrategyOne.operation()
elif self.contex == 'contex_for_two':
self.StrategyTwo.operation()
else:
raise Exception('ContexError in __init__')
# test for Strategy
s1 = Strategy('contex_for_one', StrategyOne, StrategyTwo)
s1.operation()
sigleton in python
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 安装完Anaconda,配置成功环境变量后。 进入命令行,输入python 提示:Warning: This Py...
- 问题是python自带的idel没法输出一些特定符号!!所以报错! 用pystorm运行即可!!!
- Given a 2D matrix that contains integers only, which each...
- Given a target integer T and an integer array A sorted in...