2011-09-21 20 views
9

Quiero agregar un método a una sola instancia de la clase 'list'. Ejemplo:Agregar un método a una instancia de lista en python

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

Sé que esto no funciona, pero quiero que algo así funcione así. Sé que no es una buena práctica, y sé que debería hacer una clase completamente nueva, pero creo que esto es posible en Python y no he descubierto cómo.

Soy consciente de: Dynamically add member function to an instance of a class in Python y Dynamically binding Python methods to an instance correctly binds the method names, but not the method

pero ninguno de los trabajos con una lista nativa.

Gracias!

+1

nota: no use 'return' para lambdas. –

+1

Quiere hacer 'a.first = lambda: a [0]' o 'a.first = types.MethodType (lambda self: self [0], a)'. Si agrega una función a un objeto como este, Python no lo vinculará automáticamente al objeto. –

+0

Ver http://stackoverflow.com/questions/6738987/extension-method-for-python-built-in-types – OlivierBlanvillain

Respuesta

12

Nada funcionará con una lista nativa, ya que no puede agregar métodos al tipo definido en C. Tendrá que derivar de list y agregar su método a esa clase.

+0

oh ya, esto es bastante increíble ... gracias :) – rgenito

Cuestiones relacionadas