W jaki sposób klasa bazowa Pythona może stwierdzić, czy klasa podrzędna zastąpiła swoje metody?

Oto moje przypuszczenie, które nie działa:

class BaseClass(object):
    def foo(self):
        return 'foo'
    def bar(self):
        return 'bar'
    def methods_implemented(self):
        """This doesn't work..."""
        overriden = []
        for method in ('foo', 'bar'):
            this_method = getattr(self, method)
            base_method = getattr(BaseClass, method)
            if this_method is not base_method:
                overriden.append(method)
        return overriden

class SubClass(BaseClass):
    def foo(self):
        return 'override foo'

o = SubClass()
o.methods_implemented()

Idealnie, metody_implemented () zwróciłyby ['foo'].

W jaki sposób?

(Dlaczego miałbym to robić? Moja klasa bazowa jest klasą HTTP Resource, która ma metody GET, POST itp. Domyślnie zwracają one metodę 405 nie zaimplementowaną. Posiada ona także metodę OPTIONS, która powinna zwrócić 200 odpowiedzi z nagłówkiem Allow ustaw na metody, które implementuje każda podklasa.)

questionAnswers(2)

yourAnswerToTheQuestion