2011-09-21 13 views
9

'list'クラスの1つのインスタンスにメソッドを追加したいと思います。例:Pythonのリストインスタンスにメソッドを追加する

a = [1,2] 
a.first = lambda self: return self[0] 

私は、これは動作しません知っているが、私はそのようなことはそのように動作したいです。私はそれが良い習慣ではないことを知っています。私は全く新しいクラスを行うべきであることを知っていますが、これはPythonで可能であると考えています。

私は認識しています: Dynamically add member function to an instance of a class in PythonDynamically binding Python methods to an instance correctly binds the method names, but not the method

が、ネイティブのリストと、それらの作品のどれも。

ありがとうございます!

+1

注:lambdasには 'return'を使用しないでください。 –

+1

'a.first = lambda:a [0]'や 'a.first = types.MethodType(lambda self:self [0]、a)'を行いたいとします。このようにオブジェクトに関数を追加すると、Pythonは自動的にそれをオブジェクトにバインドしません。 –

+0

http://stackoverflow.com/questions/6738987/extension-method-for-python-built-in-typesを参照してください – OlivierBlanvillain

答えて

12

Cで定義された型にメソッドを追加できないため、ネイティブリストでは何も動作しません。listから派生し、そのクラスにメソッドを追加する必要があります。

+0

ああ、これはかなり素晴らしいです...ありがとう:) – rgenito

関連する問題