デザパタ + python
■ このスレッドは過去ログ倉庫に格納されています
0066デフォルトの名無しさん
2007/03/02(金) 18:54:00あっちいけあっち。お呼びでないんだよ。
で、Singletonが話題になるのは、pythonでは__init__をprivateに出来ないので
非常に難しいからだろ。つまり、他言語のgetInstance()の方式が使えない、
というか、getInstance()を使ってくれればいいが、使ってくれないと
普通にインスタンスが出来てしまうんじゃないのか、という疑問がある。
結局、
http://newworld.ddo.jp/doc/python-iaq-ja/index_html
にある
def singleton(object, instantiated=[]):
"Raise an exception if an object of this class has been instantiated before."
assert object.__class__ not in instantiated, \
"%s is a Singleton class but is already instantiated" % object.__class__
instantiated.append(object.__class__)
class YourClass:
"A singleton class to do something ..."
def __init__(self, args):
singleton(self)
を基になんとかするのが簡単そうでいいんじゃないかあ? あまり深く考察してないけど。
あと、マルチスレッドでの問題があるが(if的判断を含むものは、マルチスレッドでは
たしかそのままでは全滅と思うが?)、それはそれで別に考えると。
(でないと、ややこしくて死ぬ。Phthonでマルチスレッドは意味あるか、というのもあるし)
■ このスレッドは過去ログ倉庫に格納されています