[Python-Dev] One-line abstractmethod function?

Allen Li cyberdupo56 at gmail.com
Thu Dec 5 19:20:22 CET 2013

Hello Python devs,

As a regular Python user, I find the abc module useful for making
Python's duck typing more explicit.  In particular, I ofen use it
like a Java interface or C header, to provide methods to implement for a
given "duck type".

90% of the time, it ends up looking something like this:

class Foo(metaclass=abc.ABCMeta):

    def f1(self):
        raise NotImplementedError

    def f2(arg1):
        raise NotImplementedError


What if there was a function, say make_abstract_method (better name
pending), so that the above could be written like:

class Foo(metaclass=abc.ABCMeta):

    f1 = abc.make_abstract_method('f1', ['self'])
    f2 = staticmethod(abc.make_abstract_method('f2', ['arg1']))

I think that it would make ABC definitions a lot more compact for many
use cases, but I welcome any criticisms against this idea.

Allen Li

More information about the Python-Dev mailing list