overriding methods - two questions

Bruno Desthuilliers bruno.42.desthuilliers at wtf.websiteburo.oops.com
Mon Nov 19 10:33:39 EST 2007


J. Clifford Dyer a écrit :
> On Mon, Nov 19, 2007 at 01:41:46PM +0100, Bruno Desthuilliers wrote regarding Re: overriding methods - two questions:
>> Steven D'Aprano a ?crit :
>>> On Fri, 16 Nov 2007 18:28:59 +0100, Bruno Desthuilliers wrote:
>>>
>>>>> 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?
>>>> While technically possible (using inspect.getargspec), trying to make
>>>> your code idiot-proof is a lost fight and a pure waste of time.
>>>
>>> Worse: it's actually counter-productive!
>>>
>>> The whole idea of being able to subclass a class means that the user 
>>> should be able to override foo() *including* the signature. 
>> If you see subclassing as subtyping, the signatures should always stay 
>> fully compatibles.
>>
> 
> Isn't that more what Zope-type interfaces are for than inheritance?

With dynamically typed languages like Python, you don't need any formal 
mechanism (zope-like interface or whatever) for subtyping to work - just 
make sure your two classes have the same public interface and it's ok. 
So indeed inheritance is first a code-reuse feature.

> I'm uncertain here, but I'm not persuaded that changing signature is
> bad.

Depends if the subclass is supposed to be a proper subtype (according to 
LSP) too.



More information about the Python-list mailing list