Understanding the pythonic way: why a.x = 1 is better than a.setX(1) ?
Bruno Desthuilliers
bdesth.quelquechose at free.quelquepart.fr
Thu Sep 4 13:49:21 EDT 2008
More information about the Python-list mailing list
Thu Sep 4 13:49:21 EDT 2008
- Previous message (by thread): Understanding the pythonic way: why a.x = 1 is better than a.setX(1) ?
- Next message (by thread): Understanding the pythonic way: why a.x = 1 is better than a.setX(1) ?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Ivan Illarionov a écrit : > On 4 сент, 22:59, Carl Banks <pavlovevide... at gmail.com> wrote: >> You can write code to guard against this if you want: >> >> class A: >> legal = set(["x"]) >> def __setattr__(self,attr,val): >> if attr not in self.legal: >> raise AttributeError("A object has no attribute '%s'" % >> attr) >> self.__dict__[attr] = val >> def __init__(self,x): >> self.y = x >> >> I suspect most people who go into Python doing something like this >> soon abandon it when they see how rarely it actually catches anything. >> > > '__slots__' is better: For which definition of "better" ? __slots__ are a mean to optimize memory usage, not to restrict dynamism. Being able to dynamically add arbitrary attributes is actually a feature, not a bug, and uselessly restricting users from doing so is not pythonic. IOW : don't do that.
- Previous message (by thread): Understanding the pythonic way: why a.x = 1 is better than a.setX(1) ?
- Next message (by thread): Understanding the pythonic way: why a.x = 1 is better than a.setX(1) ?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list