Articles of introspection

¿Cómo distinguir un método de instancia, un método de clase, un método estático o una función en Python 3?

Quiero distinguir entre métodos y funciones en Python 3. Además, quiero obtener la clase correspondiente si es un método. Mi solución actual es así: import types import inspect def function_or_method(f): if inspect.ismethod(f): if inspect.isclass(f.__self__): print(“class method”) klass = f.__self__ else: print(“instance method”) klass = f.__self__.__class__ elif inspect.isfunction(f): # function if f.__name__ != f.__qualname__: # to […]

Cómo realizar una introspección de una función definida en un módulo de extensión Cython C

El módulo de inspect de Python no parece ser capaz de inspeccionar las firmas de las funciones “integradas”, que incluyen funciones definidas en los módulos de extensión C, como las definidas por Cython. ¿Hay alguna forma de obtener la firma de una función de Python que haya definido en dicho módulo, y específicamente en Cython? […]

¿Cómo realizo la introspección en un objeto en Python 2.x?

Estoy usando Python 2.x y tengo un objeto que estoy invocando desde el éter; La documentación al respecto no es particularmente clara. Me gustaría poder obtener una lista de propiedades para ese objeto y el tipo de cada propiedad. Del mismo modo, también me gustaría obtener una lista de métodos para ese objeto, además de […]

Esté atento a un cambio variable en python

Hay un gran proyecto de Python donde un atributo de una clase simplemente tiene un valor incorrecto en algún lugar. Debería ser sqlalchemy.orm.attributes.InstrumentedAttribute, pero cuando ejecuto pruebas es un valor constante, digamos cadena. ¿Hay alguna forma de ejecutar el progtwig python en modo de depuración y ejecutar alguna comprobación (si la variable cambió de tipo) […]

¿Cómo determinaría dónde se define cada propiedad y método de una clase de Python?

Dada una instancia de alguna clase en Python, sería útil poder determinar qué línea de código fuente definió cada método y propiedad (por ejemplo, para implementar 1 ). Por ejemplo, dado un módulo ab.py class A(object): z = 1 q = 2 def y(self): pass def x(self): pass class B(A): q = 4 def x(self): […]

Obtener todos los atributos de los objetos en Python?

¿Hay alguna manera de obtener todos los atributos / métodos / campos / etc. de un objeto en Python? vars() está cerca de lo que quiero, pero no funciona a menos que un objeto tenga un __dict__ , que no siempre es cierto (por ejemplo, no es cierto para una list , un dict , […]

¿Existe una función incorporada para imprimir todas las propiedades y valores actuales de un objeto?

Entonces, lo que estoy buscando aquí es algo como la función print_r de PHP. Esto es para que pueda depurar mis scripts al ver cuál es el estado del objeto en cuestión.

Obteniendo nombres de parámetros de métodos en Python

Dada la función de Python: def aMethod(arg1, arg2): pass ¿Cómo puedo extraer el número y los nombres de los argumentos. Es decir, dado que tengo una referencia a func, quiero que la función [algo] regrese (“arg1”, “arg2”). El escenario de uso para esto es que tengo un decorador, y deseo usar los argumentos del método […]

¿Puede un método Python verificar si ha sido llamado desde dentro de sí mismo?

Digamos que tengo una función Python f y fhelp . fhelp está diseñado para llamarse a sí mismo de forma recursiva. f no debe ser llamado recursivamente. ¿Hay alguna manera para que f determine si se ha llamado recursivamente?

Python: ¿Qué significa la barra diagonal en la salida de ayuda ()?

¿Qué significa / en la help Python 3.4 para el range antes del paréntesis de cierre? >>> help(range) Help on class range in module builtins: class range(object) | range(stop) -> range object | range(start, stop[, step]) -> range object | | Return a virtual sequence of numbers from start to stop by step. | | […]