リベンジ?
いや、違うけれど…。
…なんかこうよくわからない。
いや、違うけれど…。
#!/usr/bin/env python2.5
# -*- coding: utf-8 -*-
## InstantiatedError
#シングルトン用の例外?
class InstantiatedError(Exception):
def __init__(self,klass):
self.message = str(klass) + ' このクラスのインスタンスは一つしか作れません。';
def __str__(self):
return repr(self.message);
class Singleton:
__instance = None;
def __init__(self):
if (self.__class__.__instance != None):
#インスタンスがあれば例外をはく
raise InstantiatedError(self.__class__);
else:#インスタンスが無いなら今作ったものを__instanceに入れる
self.__class__.__instance = self;
def getInstance(self):
if (self.__class__.__instance == None):#インスタンスが作られていなければ作る
self.__class__.__instance = self;
return self.__class__.__instance;
else:#インスタンスが既にあればそれを返す
return self.__class__.__instance;
class Memo(Singleton):
__text = "";
def setText(self,text):
self.__class__.__text = text;#※
def getText(self):
return self.__class__.__text;#※
#※ 必ずクラス変数を参照するようにする。
if (__name__ == "__main__"):
#以下、ひたすら動作確認
mem1 = Memo();
try:
mem2 = Memo();
except InstantiatedError:
print "インスタンスが既にありますよ。";
同じインスタンスを作ったら例外をはくようにしてみた。# -*- coding: utf-8 -*-
## InstantiatedError
#シングルトン用の例外?
class InstantiatedError(Exception):
def __init__(self,klass):
self.message = str(klass) + ' このクラスのインスタンスは一つしか作れません。';
def __str__(self):
return repr(self.message);
class Singleton:
__instance = None;
def __init__(self):
if (self.__class__.__instance != None):
#インスタンスがあれば例外をはく
raise InstantiatedError(self.__class__);
else:#インスタンスが無いなら今作ったものを__instanceに入れる
self.__class__.__instance = self;
def getInstance(self):
if (self.__class__.__instance == None):#インスタンスが作られていなければ作る
self.__class__.__instance = self;
return self.__class__.__instance;
else:#インスタンスが既にあればそれを返す
return self.__class__.__instance;
class Memo(Singleton):
__text = "";
def setText(self,text):
self.__class__.__text = text;#※
def getText(self):
return self.__class__.__text;#※
#※ 必ずクラス変数を参照するようにする。
if (__name__ == "__main__"):
#以下、ひたすら動作確認
mem1 = Memo();
try:
mem2 = Memo();
except InstantiatedError:
print "インスタンスが既にありますよ。";
…なんかこうよくわからない。
0 件のコメント:
コメントを投稿