Am 20.02.10 17:12, schrieb lallous:
HelloHow can I do something similar to pure virtual functions in C++ ? Let us consider this: class C1: # Pure virtual def cb(self, param1, param2): """ This is a callback @param param1: ... @param param2: ... """ raise NotImplementedError, "Implement me" # Implementation w/o a 'cb', thus 'cb' should not be used class C2(C1): def __init__(self): pass # Implementation w/ 'cb', thus 'cb' can be used class C3(C1): def __init__(self): pass def cb(self, param1, param2): print "i am c3 cb" # Dispatcher function that calls 'cb' only if 'cb' is implemented in child classes def dispatcher(c): if hasattr(c, 'cb'): c.cb("Hello", "World") dispatcher(C2()) dispatcher(C3()) What I want is the ability to have the dispatcher() not to call 'cb' if it was not implemented in one of the child classes. Please advise.
There is nothing more beyond that what you already did. You can raise a NotImplementedError for classes that don't implement the method. That's it.
Diez -- http://mail.python.org/mailman/listinfo/python-list
