inspectモジュール

昨日メモした記事を見てinspectモジュールの存在を初めて知った。下記は抽象クラスを実現する例。inspectの使用方法は、後で勉強してみるつもり。

def abstract():
    import inspect
    caller = inspect.getouterframes(inspect.currentframe())[1][3]
    raise NotImplementedError(caller + ' must be implemented in subclass')

class MyAbstractClass:
    def method1(self): abstract()

class MyDerivedClass(MyAbstractClass): 
    pass
--------------------------------------------------------------------------------
>>> MyDerivedClass().method1()
Traceback (most recent call last):
    ...
NotImplementedError: method1 must be implemented in subclass