python中实现Single模式

原创 2006年05月26日 09:40:00

#!/usr/bin/env python

#-*- coding:utf-8 -*-

 

class Singleton:

       """ A python singleton """

 

       class __impl:

              """ Implementation of the singleton interface """

 

       def spam(self):

              """ Test method, return singleton id """

              return id(Singleton.__instance)

 

       # storage for the instance reference

       __instance = None

 

       def __init__(self):

              """ Create singleton instance """

              # Check whether we already have an instance

              if Singleton.__instance is None:

                     # Create and remember instance

                     Singleton.__instance = Singleton.__impl()

              # Store instance reference as the only member in the handle

              self.__dict__['_Singleton__instance'] = Singleton.__instance

 

       def __getattr__(self, attr):

              """ Delegate access to implementation """

              return getattr(self.__instance, attr)

 

       def __setattr__(self, attr, value):

              """ Delegate access to implementation """

              return setattr(self.__instance, attr, value)

 

class SingletonType(type):

       """Singleton Metaclass"""

 

       def __init__(cls, name, bases, dic):

              super(SingletonType, cls).__init__(name, bases, dic)

              cls.instance = None

 

       def __call__(cls, *args, **kwargs):

              if cls.instance is None:

                     cls.instance = super(SingletonType, cls).__call__(*args, **kwargs)

              return cls.instance

      

class MyClass:

       __metaclass__ = SingletonType

      

 

if __name__ == '__main__':

       #print dir(MyClass)

       ob1 = MyClass()

       ob2 = MyClass()

       print id(ob1), id(ob2)

      

       #print dir(Singleton)

       s1 = Singleton()

       s2 = Singleton()

       print id(s1), s1.spam()

       print id(s2), s2.spam()

解开Android应用程序组件Activity的"singleTask"之谜

在Android应用程序中,可以配置Activity以四种方式来启动,其中最令人迷惑的就是"singleTask"这种方式了,官方文档称以这种方式启动的Activity总是属于一个任务的根Activi...
  • Luoshengyang
  • Luoshengyang
  • 2011年08月25日 01:13
  • 94403

深入理解Android之Gradle

深入理解Android之GradleGradle是当前非常“劲爆”得构建工具。本篇文章就是专为讲解Gradle而来。介绍Gradle之前,先说点题外话。一、题外话说实话,我在大法工作的时候,就见过Gr...
  • Innost
  • Innost
  • 2015年09月05日 20:07
  • 130406

Single模式的C#实现

单例模式是广为流传的设计模式中的一种。本质上,单例模式是一个只允许创建一个实例,并提供对这个实例简单的访问途径的类。一般而言,单例模式在创建实例时不允许传递任何参数-否则不同参数导致不同的实例创建,就...
  • zhlyyea
  • zhlyyea
  • 2008年02月23日 10:09
  • 837

Linux进入single模式

Linux启动报错,需要进入single模式做一些修改使用 “a” 操作按键进入单用户模式------推荐:简单操作 这是进入单用户模式最快速的方法。在 GRUB 启动菜单里使用 “a” 操作按键编辑...
  • 21aspnet
  • 21aspnet
  • 2015年11月19日 10:35
  • 3256

设置静态时序分析环境

setting up clocks, specifying IO timing characteristics, and specifying false paths and multicycle p...
  • mikiah
  • mikiah
  • 2012年08月28日 22:08
  • 8486

Spring+Dubbo+MyBatis+Linner分布式Web开发环境搭建

Spring+Dubbo+MyBatis+Linner分布式Web开发环境搭建               本文承接我之前的博客《Spring+Maven+Dubbo+MyBatis+Linner...
  • wp1603710463
  • wp1603710463
  • 2016年01月23日 19:10
  • 5457

Linux直接进入single模式 修改root密码 维护inittab fstab等

1. 在出现grub画面时,用上下键选中你平时启动linux的那一项,然后按e键 2. 再次用上下键选中你平时启动linux的那一项(类似于kernel /boot/vmlinuz-2.4.18...
  • XmallWood
  • XmallWood
  • 2013年05月25日 21:30
  • 6305

LINUX启动进入SINGLE模式

一、单用户模式;          单用户模式要求我们输入root用户的密码,否则您无法登录单用户模式;如果您丢失了root用户的密码,并不能用单用户模式来重设您的root密码;  ...
  • zxs9999
  • zxs9999
  • 2012年04月12日 13:57
  • 5878

grub引导的linux如何进入single模式

在grub上相应要启动的内核上按“e”。进入下一届面,继续按“e”。在进入文本界面后,输入“single”回车。进入grub界面后,按“b”,即进入single模式启动。...
  • dreamsheep
  • dreamsheep
  • 2005年07月22日 07:46
  • 1249

136. Single Number [medium] (Python)

题目链接https://leetcode.com/problems/single-number/题目原文 Given an array of integers, every element app...
  • coder_orz
  • coder_orz
  • 2016年07月29日 14:30
  • 1505
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python中实现Single模式
举报原因:
原因补充:

(最多只允许输入30个字)