On Sat, 19 Jul 2008 13:13:40 -0700, nicolas.pourcelot wrote: > On 18 juil, 17:52, Marc 'BlackJack' Rintsch <[EMAIL PROTECTED]> wrote: >> On Fri, 18 Jul 2008 07:39:38 -0700, nicolas.pourcelot wrote: >> > So, I use something like this in 'sheet.objects.__setattr__(self, >> > name, value)': >> > if type(value) == Polygon: >> > for edge in value.edges: >> > if edge is_in sheet.objects.__dict__.itervalues(): >> > object.__setattr__(self, self.__new_name(), edge) >> >> > Ok, I suppose it's confused, but it's difficult to sum up. ;-) >> >> You are setting attributes with computed names? How do you access them? >> Always with `gettattr()` or via the `__dict__`? If the answer is yes, why >> don't you put the objects the into a dictionary instead of the extra >> redirection of an objects `__dict__`? >> > > Yes, I may subclass dict, and change its __getitem__ and __setitem__ > methods, instead of changing objets __setattr__ and __getattr__... But > I prefer >>>> sheet.objects.A = Point(0, 0) > than >>>> sheet.objects["A"] = Point(0, 0)
But with computed names isn't the difference more like setattr(sheet.objects, name, Point(0, 0)) vs. sheet.objects[name] = Point(0, 0) and getattr(sheet.objects, name) vs. sheet.objects[name] Or do you really have ``sheet.objects.A`` in your code, in the hope that an attribute named 'A' exists? >> Oh and the `type()` test smells like you are implementing polymorphism >> in a way that should be replaced by OOP techniques. > > I wrote 'type' here by mistake, but I used 'isinstance' in my code. ;-) Doesn't change the "code smell". OOP approach would be a method on the geometric objects that know what to do instead of a type test to decide what to do with each type of geometric object. Ciao, Marc 'BlackJack' Rintsch -- http://mail.python.org/mailman/listinfo/python-list