"Nitin Das" <nitin....@gmail.com> wrote
class mymut(object):

 def __setattr__(self,k,v):
     if hasattr(self,k):
         if self.__dict__.get(k) == None:
             self.__dict__[k] = v

Do you need to look up the dict? Surely you could just use

if self.k is None
  self.k = v

which looks a lot simpler to me...

         else:
             raise TypeError("Cant Modify Attribute Value")

You could mention the class for example.
Compare it with the string and tuple messages:

'fred'[2] = 'g'
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

(1,2,30)[1] = 5
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment


So if your error said TypeError: mymut object does not support item assignment

that would be more consistent with the Python internal objects.

     else:
         raise TypeError("Immutable Object")

The Python immutables seem to raise an Attribute Error here rather than a Type error. And again mentioning the class name makes debugging easier:

'l'.x = 4
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'x'


HTH,

--
Alan Gauld
Author of the Learn to Program web site
http://www.alan-g.me.uk/


_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to