2011-07-13 12 views
19

¿En qué punto los métodos en Python adquieren una propiedad get? ¿Tan pronto como se definen en la clase? ¿Por qué Python me permite definir un método sin ningún argumento (ni siquiera un primer argumento self)?¿Cómo se implementan los métodos, `classmethod` y` staticmethod` en Python?

Sé cómo usar classmethod y staticmethod, y sé que son funciones integradas, pero ¿qué ocurre con una función que está decorada de ese modo?

Esencialmente, me pregunto acerca de la "magia" que ocurre entre la definición de clase y la construcción de clases.

Respuesta

21

Mira esto.

http://docs.python.org/howto/descriptor.html#static-methods-and-class-methods

También puede echar un vistazo al código fuente para los objetos de la clase y el método estático, en funcobject.c: definición de objeto método

http://hg.python.org/cpython/file/69b416cd1727/Objects/funcobject.c

La clase empieza en la línea 694, mientras la definición del objeto de método estático se inicia en la línea 852. (Me parece gracioso que tengan elementos titulados "método" en funcobject.c cuando también existe el metodobject.c)

+3

Ah, qué bueno que muestren la implementación de Python mentaciones. –

+0

Me alegro de poder ayudar. – JAB

Cuestiones relacionadas