Stef Mientki a écrit : > How should I overload / disable a method ? > In the example below I have defined the class "Power_Supply", derived > from baseclass "device".
<off> Naming conventions are to use CamelCase for class names. So it would be better to name your classes 'PowerSupply' (no '_') and 'Device'. You're of course free to use whatever naming convention you want, including no convention at all, but Python relies *a lot* on naming conventions... </off> > The baseclass has a method "execute", <off> Do you know that Python let you define your own 'callable' objects ? class SomeCallable(object): def __init__(self, name): self.name = name def __call__(self): print "wow, %s has been called" % self.name foo = SomeCallable('foo') foo() This may or not make sens in the context of your application, but whenever you find yourself naming a method 'execute', it might be worth asking yourself if the object should in fact be a callable... </off> > which will be implemented in most > derived classes, but not in all. > > Now apparently it's not allowed to overload a method with an empty > statement. > I could write a nonsense dummy statement, like "A= 3", but isn't there > another way ? the 'pass' statement def noop(): pass > thanks, Stef Mientki > > class device: > def execute (self): > print 'execute not yet implemented for', self.Name The usual idiom for 'pure virtual methods' is to raise a NotImplementedError. Now if it's ok for a subclass to implement the method as a no-op, why not just implement it as a no-op in the base class itself ? -- http://mail.python.org/mailman/listinfo/python-list