On Thu, Jan 5, 2012 at 2:59 PM, Daniel Hyams <dhy...@gmail.com> wrote: > Right, __slots__ is definitely not a good idea to use except in very > specific situations. I would strongly recommend against its usage here. > > http://groups.google.com/group/comp.lang.python/msg/0f2e859b9c002b28
I see that now. I had seen __slots__ used in a namedtuple example (in the Python docs) and assumed it was a good idea. The same idea could be achieved by using an internal _fields list and overriding __getattr__ if the fixed list of attributes was deemed a useful feature. Ryan > > > > On Thu, Jan 5, 2012 at 3:50 PM, Eric Firing <efir...@hawaii.edu> wrote: >> >> On 01/05/2012 07:34 AM, Ryan May wrote: >> > On Thu, Jan 5, 2012 at 10:58 AM, Benjamin Root<ben.r...@ou.edu> wrote: >> >> >> >> >> >> On Thu, Jan 5, 2012 at 10:40 AM, Benjamin Root<ben.r...@ou.edu> wrote: >> >>> >> >>> >> >>>> At the very least, it would help in compartmentallizing all the >> >>>> possible >> >>>> drawing attributes that are common across all artists. Currently, I >> >>>> am >> >>>> envisioning using a defaultdict object (which was introduced in >> >>>> python 2.5) >> >>>> or subclassing from it. This might help in keeping compatibility >> >>>> with >> >>>> existing code. Subclassing would allow for modifying __get__ and >> >>>> __set__ to >> >>>> treat some elements like 'c' and 'color', 'lw' and 'linewidth' and so >> >>>> on as >> >>>> the same. >> >> >> >> >> >> Grrrr, in defaultdict(), the default_factory is called without >> >> arguments, so >> >> a factory can't be made to produce a default value for a given key, >> >> unless I >> >> resort to more hackary... >> > >> > Might be better to explicitly use properties for this rather than >> > overriding dict: >> > >> > class Style(object): >> > __slots__ = ('_lw') >> > >> > def __init__(self, lw=None): >> > self.lw = lw >> > >> > def _set_linewidth(self, lw): >> > self._lw = lw >> > >> > def _get_linewidth(self): >> > return self._lw >> > >> > lw = property(_get_linewidth, _set_linewidth) >> > linewidth = property(_get_linewidth, _set_linewidth) >> > >> > Declaring slots allows you to keep the available attributes to those >> > explicity listed. This way, you can't set a random (misspelled?) >> > attribute and wonder for hours why style.edgcolor = 'blue' doesn't >> > work. >> >> This seems useful, and may be OK for this application; but a little >> googling indicates that it is not really what __slots__ was intended >> for, it is at best controversial, and it should be used very sparingly >> and carefully. >> >> Eric >> >> > >> > Ryan >> > >> >> >> >> ------------------------------------------------------------------------------ >> Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex >> infrastructure or vast IT resources to deliver seamless, secure access to >> virtual desktops. With this all-in-one solution, easily deploy virtual >> desktops for less than the cost of PCs and save 60% on VDI infrastructure >> costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox >> _______________________________________________ >> Matplotlib-users mailing list >> Matplotlib-users@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > > > > -- > Daniel Hyams > dhy...@gmail.com > > ------------------------------------------------------------------------------ > Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex > infrastructure or vast IT resources to deliver seamless, secure access to > virtual desktops. With this all-in-one solution, easily deploy virtual > desktops for less than the cost of PCs and save 60% on VDI infrastructure > costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox > _______________________________________________ > Matplotlib-users mailing list > Matplotlib-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > -- Ryan May Graduate Research Assistant School of Meteorology University of Oklahoma ------------------------------------------------------------------------------ Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex infrastructure or vast IT resources to deliver seamless, secure access to virtual desktops. With this all-in-one solution, easily deploy virtual desktops for less than the cost of PCs and save 60% on VDI infrastructure costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users