[Tutor] intefaces in python
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
> 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.
More information about the Tutor