Articles of métodos de

Cómo sobrecargar de manera efectiva y sistemática los métodos de clase Python.

Supongamos que tiene una clase Python (> = 2.6) con un montón de métodos (¡cientos!). Ahora alguien quiere subclasificar eso, pero se dio cuenta de que la mayoría de los métodos de la clase base solo necesitan un simple “ajuste”. También hay solo un puñado de formas diferentes de sintonizar esos métodos. Algunas implican transformaciones […]

Método de decoración (sobrecarga de métodos de clase)

Inspirado por la respuesta de Muhammad Alkarouri en ¿Cuáles son los buenos usos para las “anotaciones de funciones” de Python3 ? Quiero hacer este método multimethod para métodos, no para funciones normales. Sin embargo, cuando hago esto registry = {} class MultiMethod(object): def __init__(self, name): self.name = name self.typemap = {} def __call__(self, *args): types […]

Python: Permitir que los métodos no definidos específicamente se llamen ala __getattr__

Estoy intentando escribir una clase de Python que tiene la capacidad de hacer lo siguiente: c = MyClass() a = cA(“a name for A”) # Calls internally c.create(“A”, “a name for A”) b = cB(“a name for B”) # Calls internally c.create(“B”, “a name for B”) A y B pueden ser cualquier cosa (bueno, están […]

El método de acceso a Python crea nuevos objetos en cada acceso?

Al investigar por otra pregunta , encontré lo siguiente: >>> class A: … def m(self): return 42 … >>> a = A() Esto fue esperado: >>> Am == Am True >>> am == am True Pero esto no lo esperaba: >>> am is am False Y sobre todo no esto: >>> Am is Am False […]

¿Cuál es la forma más fácil de generar un Gráfico de flujo de control para un método en Python?

Estoy escribiendo un progtwig que intenta comparar dos métodos. Me gustaría generar Gráficos de flujo de control (CFG) para todos los métodos emparejados y usar una clasificación topológica para comparar los dos gráficos.

Usando código de Cython autodefinido de otro código de Cython

Actualmente estoy tratando de optimizar mi progtwig Python y comencé con Cython para reducir la sobrecarga de llamadas de funciones y tal vez más adelante incluir funciones de bibliotecas C optimizadas. Así que me encontré con el primer problema: Estoy usando la composición en mi código para crear una clase más grande. Hasta ahora he […]

Comprobar si una función es un método de algún objeto.

¿Cómo comprobar si una función es un método de algún objeto? Por ejemplo: def check_method(f): … check_method(lambda x: x + 1) # >>> False check_method(SomeClass().some_method) # >>> True Hay algunos atributos especiales en los métodos en mi ejemplo ‘helloworld’ (por ejemplo, ‘im_self’, ‘__self__’ etc). ¿Puedo confiar en ellos o hay alguna manera mejor?

Python: ¿Por qué las listas no tienen un método de búsqueda?

Estaba tratando de escribir una respuesta a esta pregunta y me sorprendió bastante descubrir que no hay un método de búsqueda para las listas, las listas solo tienen el método de índice (las cadenas tienen buscar e índice). ¿Alguien puede decirme la razón detrás de eso? ¿Por qué las cuerdas tienen ambas?

Anulación del método Python, ¿importa la firma?

Digamos que tengo class Super(): def method1(): pass class Sub(Super): def method1(param1, param2, param3): stuff ¿Es esto correcto? ¿Las llamadas a method1 siempre irán a la subclase? Mi plan es tener 2 subclases por cada método de reemplazo1 con diferentes parámetros

¿Cómo sobrecargar el método __bool__ de Python?

Posible duplicado: definiendo “boolness” de una clase en python Pensé que esto debería imprimir “Falso”, ¿por qué está imprimiendo “Verdadero”? >>> class Foo(object): … def __bool__(self): … return False … >>> f = Foo() >>> if f: … print “True” … else: … print “False” … True >>>