2014-01-15 5 views
0
은 내가, 파이썬 프로그래밍 어쩌면 잘못된 문제를 해결하는 것이 나의 접근 방식 비교적 새로운 오전 것을 주장하고자하는 모든

첫째, 그런 경우싱글 톤 클래스는

나는 경우 알려 주시기 바랍니다 값을 유지하지 않는 Singleton 클래스를 사용하여 구성 매개 변수를 내 코드에 저장하고 필요할 때 사용하려고합니다. 초기 생성시 Singleton에 저장된 데이터가 Object에 대한 후속 호출에서 유지되지 않는다는 문제가 발생합니다.

어쩌면 내가 싱글 톤 개체를 만드는 방법이 잘못되었습니다. 그러나 나는 그 코드 샘플을 따라 가고있었습니다. 여기에 첫 번째

다음은 싱글 인스턴스

configurator = Config() 
configurator.dbserver = dbserver 

내 최초 생성 후 내 싱글 클래스

class Config(object): 

    __instance = None 

    dbserver = "" 

    def __new__(cls): 
     if cls.__instance == None: 
      __instance = object.__new__(cls) 
      __instance.name = "Configuration Object" 
     return __instance 

입니다 이후 내가 할 다음과 dbserver 속성은 빈 문자열을 반환합니다.

configurator = Config() 
print configurator.dbserver 

시간을내어 읽어 주셔서 감사합니다.

+0

http://stackoverflow.com/questions/42558/python-and-the-singleton-pattern과 동일합니까? – Chandan

+1

'cls .__ instance'는 항상 'None'이므로 새로운 객체가 생성 될 때마다 항상'None'입니다. – thefourtheye

답변

5

로컬 변수 __instance을 클래스 변수 cls.__instance에 할당하지 않는 것 같습니다.

그러나 변수를 저장하기 위해이 작업을 수행하는 경우 왜 인스턴스가 필요한지 알 수 없습니다. Python에서 그 자체로 클래스 1 객체 인 클래스에 직접 저장하거나 더 Python적인 모듈을 사용하십시오. 코드를 발생하지 것이다 클래스 자체를 사용

편집

때마다 다시 실행한다 : 클래스 레벨의 코드 만 실행되는 클래스가 처음 수입에서 발생 정의, 때.

하지만 클래스가 모듈 (파일)에 있어야하기 때문에 모든 코드를 모듈에 직접 넣고 필요한 곳으로 가져올 수 있습니다. 모듈 수준의 코드는 첫 번째 가져 오기에서만 실행됩니다.

+0

와우, 누브 실수, 정말 고마워요 :) – DevZer0

+0

내가 설정 파일에서 구성을 읽고 런타임에 클래스에 저장하는 중이 야,하지만 당신의 제안은 내가 그것을 사용할 수있는 클래스를 사용하여 설정에서 변수를 읽을 수있는 참조하십시오 파일을 다운로드 받아 사용할 수 있습니다. 하지만 내가 그것을 사용할 때마다 config 파일을 다시 읽어야하는 싱글 톤 객체를 사용하지 않는다면? – DevZer0

+0

제안하고있는 파이썬 접근법에 대해 더 자세히 설명해 주실 수 있습니까? 그렇다면 설정 파일을 만드는 대신 클래스를 구성 파일로 사용하십시오. – DevZer0

관련 문제