[Tutor] intefaces in python

Amit Sethi amit.pureenergy at gmail.com
Mon Jun 29 14:41:06 CEST 2009


well dir(object) , how would that help . All the functions in base
class would automatically be inherited by the objects of plug-in class
... so they would come in the list even if it was not implemented...

On Mon, Jun 29, 2009 at 5:58 PM, Luke
Paireepinart<rabidpoobear at gmail.com> wrote:
> Amit Sethi wrote:
>>
>> I think ideally i want a compile Error just like java ..
>
> Why?  For developers, so they'll know if their plugin meets the interface
> requirements?
> Have you considered just making a unit test that will call all interface
> functions with appropriate parameters?  Then they can just run the test on
> their code and if it passes they will know they implemented the minimum
> required functions (whether they do what they're supposed to do is a
> different story...)  It would provide the same level of interface security
> as Java would, except it would allow them to decide how much of the contract
> they need to enforce for their specific application. That's one of the
> things I like about python... for example, if I want to override stdout so
> all my print statements go to a file, I just have to create a new class that
> has a write() method that writes anything it's passed to a file... I don't
> have to implement all of the other functionality that whatever object
> resides there before has.  So in that case, if I ran your unit test on my
> replacement stdout, it may say "Hey, you failed the writeline() test, your
> object doesn't have this!" but since I know I'm not going to use writeline,
> I can just ignore the warning.  Or if I meant for it to have writeline, I
> can say "oh snap I need to go implement writeline!"  But as I said, that
> wouldn't enforce the interface, just inform them of it if they desired that,
> which I would personally prefer but you may not.
> That's really the idea behind duck typing.  Assume that they wrote
> sufficient code to handle whatever you use it for and if they didn't it'll
> blow up in their face.
>>
>> @Dave Angel
>>
>> You have said
>> "you could arrange that when the plugin is first encountered, you
>> validate that it has all the required methods and data members.  Not
>> by calling them, but by scanning the object for their existence."
>>
>> that would be ideal ... can you enlighten me on this how may one do that.
>>
>>
>
> Not sure if it's what he meant, but you can just do a dir(object) and it
> will return a list with all method / member names.  then you could just
> confirm that the names are there.
>



-- 
A-M-I-T S|S


More information about the Tutor mailing list