Thanks guys,<div>    NamedTuple implementation is preety nice solution.</div><div><br></div><div>--nitin<br><br><div class="gmail_quote">On Thu, Aug 19, 2010 at 6:28 PM, Peter Otten <span dir="ltr">&lt;__<a href="mailto:peter__@web.de">peter__@web.de</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div></div><div class="h5">Peter Otten wrote:<br>
<br>
&gt; Nitin Das wrote:<br>
&gt;<br>
&gt;&gt; class mymut(object):<br>
&gt;&gt;<br>
&gt;&gt;   def __setattr__(self,k,v):<br>
&gt;&gt;       if hasattr(self,k):<br>
&gt;&gt;           if self.__dict__.get(k) == None:<br>
&gt;&gt;               self.__dict__[k] = v<br>
&gt;&gt;           else:<br>
&gt;&gt;               raise TypeError(&quot;Cant Modify Attribute Value&quot;)<br>
&gt;&gt;       else:<br>
&gt;&gt;           raise TypeError(&quot;Immutable Object&quot;)<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; class mm(mymut):<br>
&gt;&gt;     x = &#39;&#39;<br>
&gt;&gt;     y = &#39;&#39;<br>
&gt;&gt;     def __init__(self,x,y):<br>
&gt;&gt;         self.x = x<br>
&gt;&gt;         self.y = y<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; p = mm(10,11)<br>
&gt;&gt; print p.x<br>
&gt;&gt; print p.y<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; I have created this immutable object.Is there any other better<br>
&gt;&gt; implementation?<br>
&gt;<br>
&gt; How about<br>
&gt;<br>
&gt;&gt;&gt;&gt; from collections import namedtuple<br>
&gt;&gt;&gt;&gt; Mm = namedtuple(&quot;Mm&quot;, &quot;x y&quot;)<br>
&gt;&gt;&gt;&gt; p = Mm(10, 11)<br>
&gt;&gt;&gt;&gt; p.x<br>
&gt; 10<br>
&gt;&gt;&gt;&gt; p.y<br>
&gt; 11<br>
&gt;&gt;&gt;&gt; p.x = 42<br>
&gt; Traceback (most recent call last):<br>
&gt;   File &quot;&lt;stdin&gt;&quot;, line 1, in &lt;module&gt;<br>
&gt; AttributeError: can&#39;t set attribute<br>
&gt;&gt;&gt;&gt; p.z = 42<br>
&gt; Traceback (most recent call last):<br>
&gt;   File &quot;&lt;stdin&gt;&quot;, line 1, in &lt;module&gt;<br>
&gt; AttributeError: &#39;Mm&#39; object has no attribute &#39;z&#39;<br>
&gt;&gt;&gt;&gt;<br>
<br>
</div></div>By the way, you can see the class definition with<br>
<br>
namedtuple(&quot;Mm&quot;, &quot;x y&quot;, verbose=True)<br>
<div><div></div><div class="h5"><br>
Peter<br>
<br>
_______________________________________________<br>
Tutor maillist  -  <a href="mailto:Tutor@python.org">Tutor@python.org</a><br>
To unsubscribe or change subscription options:<br>
<a href="http://mail.python.org/mailman/listinfo/tutor" target="_blank">http://mail.python.org/mailman/listinfo/tutor</a><br>
</div></div></blockquote></div><br></div>