여러 방법은 단일 모드를 달성하기 위해 실시

싱글

싱글 (싱글 톤 패턴)가 공통의 소프트웨어 디자인 패턴이 모드의 주요 목적은 있도록하는 것입니다 특정 클래스가 존재 하나의 인스턴스 만이있다 . 당신은 전체 시스템에서 클래스의 인스턴스를 하나만 나타날 수 있습니다 싶을 때, 단일 개체가 편리하게 할 수 있습니다.

예를 들어, 파일에 저장된 서버 프로그램의 구성 정보는 클라이언트 구성 파일은 appconfig가 클래스를 통해 정보를 읽을 수 있습니다. 프로그램이 실행되는 경우가 많은 장소 객체 appconfig가 시스템의 여러 인스턴스에지도 객체 appconfig가의 인스턴스를 만들 필요가 구성 파일의 내용을 사용할 필요가 많은, 즉 말을하는 것입니다, 그러나 이것은 메모리의 심각한 낭비 자원, 특히 많은 경우에 설정 파일 내용. 사실,이 클래스 appconfig가처럼, 우리는 프로그램 실행 중에 객체의 하나의 인스턴스 만이 있기를 바랍니다.

파이썬에서는 단일 모드 실시 예를 달성하기 위해 다양한 방법을 사용하여

모듈 싱글 톤을 사용하여 구현된다

사실, 파이썬 모듈은 자연 싱글 톤 패턴 최초 수입시의 모듈을 생성하기 때문에,  .pyc 두 번째 시간을 가져올 때 파일을, 그것을 직접로드됩니다  .pyc 다시 실행 모듈의 코드없이 파일. 따라서, 우리는 하나 개의 모듈 데이터 및 관련 함수를 정의 할 필요는 피사체의 한 실시 예를 얻는 것이 가능하다. 우리가 정말 싱글 톤 클래스를 원한다면, 당신은 그렇게 고려할 수 있습니다 :

mysingleton.py

클래스 싱글 (객체) : 
    데프 foo는 (자기) : 
        패스 
싱글 = 싱글 ()

위의 코드는 파일에 저장되어  mysingleton.py 사용하는 다른 파일에 직접 오브젝트 파일로 싱글의 대상이되는 객체를 소개합니다

  수입 싱글에서

예 장식 단일 모드

싱글 DEF (CLS) 
    _instance = {} 

    DEF _singleton (인수 *, ** kargs) 
        아니라면 _instance의 CLS : 
            _instance [CLS = CLS의 (* 인수 ** kargs) 
        복귀 _instance [CLS] 

    _singleton 창 


@Singleton 
클래스 A (객체) : 
    A = 1 

    DEF __init __ (자체, X = 0) : 
        self.x X = 


A1 = A (2)  

__new__ 방법을 사용

클래스 담당자 : 
    therading 수입 잠금에서 
    잠금 = 잠금 () 
    _instance = 없음 
    : 데프 __ (CLS, * 인수, ** kwargs로) __new하지 
    cls.lock과를 : 
    
            cls._instance가 없음 인 경우 
                cls._instance = 객체 .__ 새로운 __ (CLS) 
            cls._instance 반환 
    : 데프 __init __ (자기) 
        패스를

  

추천

출처www.cnblogs.com/xinjie123/p/10957190.html