On Sat, 18 Nov 2006, Andrew Koenig wrote: > Now, suppose that every type that signals the presence of an ability > inherits from "ability". Then we've just broken the whole ability system. > Because if "iterator" inherits from "ability" and every iterator type > inherits from "iterator", then every iterator is also able to signal the > presence of an ability--and we most definitely do not want that!
> Am I missing something? I believe you have a type error in this argument. Instance x of class X has ability A, you suggest, should be indicated by having X derive from signalling_class(A). That's is-a: All Xs are signalling_class(A)s. Then sc(A) is the class of objects with ability A. You want to indicate that sc(A) is a class that signals an ability. You suggest you do this by having sc(A) derive from a base class, sc(Signals_Abilities). That is a type error: to indicate that sc(A) is an ability-signalling class, your original convention is that sc(A) should be an _instance_ of sc(Signals_Abilities). That is not represented by an inheritance relationship between sc(A) and sc(Signals_Abiliities), but by a membership relationship. So, sc(Signals_Abilities) is actually a metaclass, I think. jan -- jan grant, ISYS, University of Bristol. http://www.bris.ac.uk/ Tel +44 (0)117 3317661 http://ioctl.org/jan/ Spreadsheet through network. Oh yeah. _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com