qshinoの日記

Powershell関係と徒然なこと

Python Classやインスタンスにメソッド追加。

メソッド追加

Pythonでクラス定義後やインスタンス生成後にメソッドをクラスやインスタンスに追加する方法

  1. クラスにメソッドを追加
  2. インスタンスにメソッドを追加

クラスにメソッドを追加

クラスに関数を追加

class poi:
  def __init__(self):
    pass

def add(self, a):
  self.poi=a

ins1 = poi()

# クラスにメソッドを追加

poi.add=add

ins1.add(3)

組込みクラスにはメソッドを追加できない場合がある。

インスタンスにメソッド追加

特定のインスタンスのみにメソッドを追加する。types.MethodTypeを使う。

from types import MethodType # 追加

class poi:
  def __init__(self):
    pass

def add(self, a):
  self.poi=a

ins1 = poi()

# インスタンスにメソッド追加
ins1.add=MethodType(add,ins1)

ins1.add(3)

参考

http://kk6.hateblo.jp/entry/2012/09/09/%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%81%AB%E5%8B%95%E7%9A%84%E3%81%AB%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B

https://www.lifewithpython.com/2014/12/python-use-eigen-method.html

https://qiita.com/tamago324/items/80705655617ab7fa31a5

http://forum.chaos-project.com/index.php?topic=7648.0

http://stackoverflow.com/questions/972/adding-a-method-to-an-existing-object

https://www.lifewithpython.com/2014/08/python-add-instance-methods-to-existing-class.html