Op 29/03/20 om 16:49 schreef Peter Otten: > Antoon Pardon wrote: > >> >> I have the following program >> >> class slt: >> __slots__ = () >> ... >> >> class slt1 (slt): >> __slots__ = 'fld1', 'fld2' >> ... >> >> class slt2(slt1): >> __slots__ = 'fld3', >> .... > Anyway, here's my attempt to collect inherited slots: > > @classmethod > def get_slots(cls): > all_slots = set() > for C in cls.__mro__: > try: > slots = C.__slots__ > except AttributeError: > assert C is object > else: > all_slots.update(slots) > return all_slots >
I have been thinking about this. AFAIU the slots are static data. So it seems a bit odd to calculate them with a (class) method. This seems a reasonable opportunity to use a class decorator or a metaclass. But I am in doubt about which would be the better solution here. -- Antoon Pardon. -- https://mail.python.org/mailman/listinfo/python-list