On Nov 16, 11:03 am, Donn Ingle <[EMAIL PROTECTED]> wrote: > Hi, > Here's a framework for the questions: > > --- In a module, part of an API --- > class Basis ( object ): > def foo ( self, arg ): > pass > > --- In user's own code --- > class Child ( Basis ): > def foo ( self, not, sure ): > ... > > Question 1: > > Given that the user of the API can choose to override foo() or not, how can > I control the signature that they use? In the example the user has chosen > bad arguments and Python will complain, but it's describing the sig of the > *overridden* method and not the one in the parent class.
Actually, Python is complaining about your user's poor choice of argument names. 'not' is a reserved keyword. Change it to 'naught' or 'knot' or 'not_' and Python will accept this just fine. Whether this is a good idea or not is a separate question. But given Python's philosophy of "you are the human, so you must know what you are doing" (which is both an assumption and a directive), I don't think you will find much language machinery to prevent it. -- Paul -- Paul -- http://mail.python.org/mailman/listinfo/python-list