<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Python: Singleton</title>
	<atom:link href="http://codare.net/2007/05/03/python-singleton/feed/" rel="self" type="application/rss+xml" />
	<link>http://codare.net/2007/05/03/python-singleton/</link>
	<description>Programadores, uni-vos!</description>
	<lastBuildDate>Wed, 16 May 2012 12:39:54 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Ademar Reis</title>
		<link>http://codare.net/2007/05/03/python-singleton/#comment-347</link>
		<dc:creator>Ademar Reis</dc:creator>
		<pubDate>Tue, 15 Jul 2008 19:58:16 +0000</pubDate>
		<guid isPermaLink="false">http://codare.net/2007/05/03/python-singleton/#comment-347</guid>
		<description>O melhor exemplo de implementação de singleton que eu encontrei foi no texto sobre meta-classes do GVR: http://www.python.org/download/releases/2.2.3/descrintro/

Não sei se vai ficar direito no comentário aqui do wordpress, mas aí vai a minha implementação com base no exemplo do texto:


class Singleton(object):
    def __new__(cls, *args, **kwds):
        it = cls.__dict__.get(&quot;__it__&quot;)
        if it is not None:
            return it
        cls.__it__ = it = object.__new__(cls)
        it.__1st_init__(*args, **kwds)
        return it
    def __1st_init__(self, *args, **kwds):
        pass

class FoobarTon(Singleton):
    def __1st_init__(self):
        print &quot;calling __1st_init__&quot;
        self.x = 0
    def __init__(self):
        print &quot;calling __init__&quot;
    def inc(self):
        self.x += 1

print &quot;FoobarTon&quot;
f1 = FoobarTon()
f2 = FoobarTon()
f3 = FoobarTon()
f1.inc();
f2.inc();
f3.inc();


print &quot;f1 is fs2: %s&quot; % str(f1 is f2)
print &quot;f1 is fs3: %s&quot; % str(f1 is f3)
print &quot;f3.x: %d&quot; % f3.x


Anyway, esse código tá no meu junk-code: http://svn.ademar.org/code/trunk/junk-code/ (é o último exemplo do singleton_vs_borg.py).</description>
		<content:encoded><![CDATA[<p>O melhor exemplo de implementação de singleton que eu encontrei foi no texto sobre meta-classes do GVR: <a href="http://www.python.org/download/releases/2.2.3/descrintro/" rel="nofollow">http://www.python.org/download/releases/2.2.3/descrintro/</a></p>
<p>Não sei se vai ficar direito no comentário aqui do wordpress, mas aí vai a minha implementação com base no exemplo do texto:</p>
<p>class Singleton(object):<br />
    def __new__(cls, *args, **kwds):<br />
        it = cls.__dict__.get(&#8220;__it__&#8221;)<br />
        if it is not None:<br />
            return it<br />
        cls.__it__ = it = object.__new__(cls)<br />
        it.__1st_init__(*args, **kwds)<br />
        return it<br />
    def __1st_init__(self, *args, **kwds):<br />
        pass</p>
<p>class FoobarTon(Singleton):<br />
    def __1st_init__(self):<br />
        print &#8220;calling __1st_init__&#8221;<br />
        self.x = 0<br />
    def __init__(self):<br />
        print &#8220;calling __init__&#8221;<br />
    def inc(self):<br />
        self.x += 1</p>
<p>print &#8220;FoobarTon&#8221;<br />
f1 = FoobarTon()<br />
f2 = FoobarTon()<br />
f3 = FoobarTon()<br />
f1.inc();<br />
f2.inc();<br />
f3.inc();</p>
<p>print &#8220;f1 is fs2: %s&#8221; % str(f1 is f2)<br />
print &#8220;f1 is fs3: %s&#8221; % str(f1 is f3)<br />
print &#8220;f3.x: %d&#8221; % f3.x</p>
<p>Anyway, esse código tá no meu junk-code: <a href="http://svn.ademar.org/code/trunk/junk-code/" rel="nofollow">http://svn.ademar.org/code/trunk/junk-code/</a> (é o último exemplo do singleton_vs_borg.py).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bruno Tikami</title>
		<link>http://codare.net/2007/05/03/python-singleton/#comment-346</link>
		<dc:creator>Bruno Tikami</dc:creator>
		<pubDate>Tue, 25 Mar 2008 02:48:41 +0000</pubDate>
		<guid isPermaLink="false">http://codare.net/2007/05/03/python-singleton/#comment-346</guid>
		<description>Olá Osvaldo,

tomei a liberdade de usar este código que você postou na minha aplicação e hoje me deparei com uma situação interessante:

quando crio uma nova instância, a parte do método __new___ funciona normalmente mas ainda assim o método __init__ da  classe é chamado... É possível evitar isso ?

Obrigado,

Tkm</description>
		<content:encoded><![CDATA[<p>Olá Osvaldo,</p>
<p>tomei a liberdade de usar este código que você postou na minha aplicação e hoje me deparei com uma situação interessante:</p>
<p>quando crio uma nova instância, a parte do método __new___ funciona normalmente mas ainda assim o método __init__ da  classe é chamado&#8230; É possível evitar isso ?</p>
<p>Obrigado,</p>
<p>Tkm</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: yguaratã</title>
		<link>http://codare.net/2007/05/03/python-singleton/#comment-345</link>
		<dc:creator>yguaratã</dc:creator>
		<pubDate>Mon, 07 May 2007 10:19:56 +0000</pubDate>
		<guid isPermaLink="false">http://codare.net/2007/05/03/python-singleton/#comment-345</guid>
		<description>É o que meu comentário diz: &quot;...quando importados...&quot;</description>
		<content:encoded><![CDATA[<p>É o que meu comentário diz: &#8220;&#8230;quando importados&#8230;&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gustavo Sverzut Barbieri</title>
		<link>http://codare.net/2007/05/03/python-singleton/#comment-344</link>
		<dc:creator>Gustavo Sverzut Barbieri</dc:creator>
		<pubDate>Sat, 05 May 2007 00:48:33 +0000</pubDate>
		<guid isPermaLink="false">http://codare.net/2007/05/03/python-singleton/#comment-344</guid>
		<description>yguaratã,

O que faz o seu exemplo funcionar não é o fato do módulo ser __compilado__ apenas uma vez e sim que ele só é __lido/executado__ uma vez, sendo ele mesmo um singleton.</description>
		<content:encoded><![CDATA[<p>yguaratã,</p>
<p>O que faz o seu exemplo funcionar não é o fato do módulo ser __compilado__ apenas uma vez e sim que ele só é __lido/executado__ uma vez, sendo ele mesmo um singleton.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: yguaratã</title>
		<link>http://codare.net/2007/05/03/python-singleton/#comment-343</link>
		<dc:creator>yguaratã</dc:creator>
		<pubDate>Thu, 03 May 2007 23:05:51 +0000</pubDate>
		<guid isPermaLink="false">http://codare.net/2007/05/03/python-singleton/#comment-343</guid>
		<description>Uma outra maneira de se criar singletons em Python é instaciar as classes(que serão singletons) em um módulo separado. Sempre que se precisar das mesmas é só importar o módulo. Como os módulos são compilados apenas uma vez, quando importados, então temos nassas singletons.</description>
		<content:encoded><![CDATA[<p>Uma outra maneira de se criar singletons em Python é instaciar as classes(que serão singletons) em um módulo separado. Sempre que se precisar das mesmas é só importar o módulo. Como os módulos são compilados apenas uma vez, quando importados, então temos nassas singletons.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Walter Cruz</title>
		<link>http://codare.net/2007/05/03/python-singleton/#comment-342</link>
		<dc:creator>Walter Cruz</dc:creator>
		<pubDate>Thu, 03 May 2007 18:14:28 +0000</pubDate>
		<guid isPermaLink="false">http://codare.net/2007/05/03/python-singleton/#comment-342</guid>
		<description>Oi Osvaldo! Parece que há um pequenino erro no código!
Deve ser:
cls._inst = object.__new__(cls, *args, **kwargs)
ao invés de:
cls._inst = type.__new__(cls, *args, **kwargs)</description>
		<content:encoded><![CDATA[<p>Oi Osvaldo! Parece que há um pequenino erro no código!<br />
Deve ser:<br />
cls._inst = object.__new__(cls, *args, **kwargs)<br />
ao invés de:<br />
cls._inst = type.__new__(cls, *args, **kwargs)</p>
]]></content:encoded>
	</item>
</channel>
</rss>

