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<rabidpoob...@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 _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor