#! /usr/bin/env python # -*- coding: utf-8 -*- class Base(object): def print_num(self): print(self.number()) def number(self): return 3 def new_number(self): return self._old_number() + 5 def replace_number(): if not hasattr(Base, "_old_number"): Base._old_number = Base.number Base.number = new_number if __name__ == "__main__": x = Base() x.print_num() replace_number() y = Base() y.print_num() z = Base() z.print_num() print(z._old_number())
とかすれば既存クラスの動きを一応変更できそうだなぁ。そして、オリジナルのインスタンスメソッドも必要に応じて呼び出せる。