tablas - read text pandas python
Métodos de extensión en Python (4)
No estoy seguro si eso es lo que está preguntando, pero puede ampliar los tipos existentes y luego llamar lo que quiera sobre lo nuevo:
class int(int):
def random_method(self):
return 4 # guaranteed to be random
v = int(5) # you''ll have to instantiate all you variables like this
v.random_method()
class int(int):
def xkcd(self):
import antigravity
print(42)
>>>v.xkcd()
Traceback (most recent call last):
File "<pyshell#81>", line 1, in <module>
v.xkcd()
AttributeError: ''int'' object has no attribute ''xkcd''
c = int(1)
>>> c.random_method()
4
>>> c.xkcd()
42
espero que aclare tu pregunta
¿Tiene Python métodos de extensión como C #? ¿Es posible llamar a un método como:
MyRandomMethod()
en tipos existentes como int
?
myInt.MyRandomMethod()
Otra opción es anular la metaclase. Esto le permite, entre otras cosas, especificar funciones que deberían existir en todas las clases.
Este artículo comienza a discutirlo:
http://www.onlamp.com/pub/a/python/2003/04/17/metaclasses.html
Tuve mucha suerte con el método descrito aquí:
http://mail.python.org/pipermail/python-dev/2008- enero / 76194.html
No tengo idea si funciona en builtins sin embargo.
Puede agregar los métodos que desee en objetos de clase definidos en el código de Python (parche AKA mono):
>>> class A(object):
>>> pass
>>> def stuff(self):
>>> print self
>>> A.test = stuff
>>> A().test()
Esto no funciona en los tipos __dict__
, porque su __dict__
no es modificable (es un dictproxy
).
Entonces no, no hay un mecanismo de método de extensión "real" en Python.