Articles of sobrecarga

python: cambia la impresión de sys.stdout a la función de impresión personalizada

Estoy tratando de entender cómo crear una función de impresión personalizada. (usando python 2.7) import sys class CustomPrint(): def __init__(self): self.old_stdout=sys.stdout #save stdout def write(self, text): sys.stdout = self.old_stdout #restre normal stdout and print print ‘custom Print—>’ + text sys.stdout= self # make stdout use CustomPrint on next ‘print’ # this is the line that […]

Operador de sobrecarga () en Python

Estoy tratando de aprender curry en Python para mi clase y tengo que sobrecargar al operador () para ello. Sin embargo, no entiendo cómo puedo sobrecargar al operador (). ¿Puedes explicar la lógica detrás de la sobrecarga de los paréntesis? ¿Debo sobrecargar primero (y luego) o puedo hacer algo de esto? Además, ¿hay un nombre […]

sobrecarga de operadores para __truediv__ en python

Estoy tratando de implementar la sobrecarga para el operador de división en Python. class Fraction: def __init__(self,top,bottom): def gcd(m, n): while m % n != 0: old_m = m old_n = n m = old_n n = old_m % old_n return n common = gcd(top,bottom) self.num = top/common self.den = bottom/common def __str__ (self): return […]

¿Cómo sobrescribo delete () en un modelo y todavía funciona con eliminaciones relacionadas?

Tengo un problema porque estoy eliminando un Widget utilizando some_widget_instance.delete (). También tengo un modelo llamado WidgetFile con un método de eliminación de cancelación () para poder eliminar archivos de mi disco duro cuando se elimina un WidgetFile. El problema que tengo es que si elimino un Widget, y tiene WidgetFiles relacionados con esto como […]

Sobrecarga del operador en python con el objeto en el lado derecho del operador

Recientemente me enteré de la sobrecarga de operadores en python y me gustaría saber si es posible lo siguiente. Considere la siguiente clase hipotética / ideada. class My_Num(object): def __init__(self, val): self.val = val def __add__(self, other_num): if isinstance(other_num, My_Num): return self.val + other_num.val else: return self.val + other_num Sé que la forma en que […]

cómo “reimportar” el módulo a Python y luego cambiar el código después de la importación

Tengo un foo.py def foo(): print “test” En IPython utilizo: In [6]: import foo In [7]: foo.foo() test Entonces cambié el foo() a: def foo(): print “test changed” En IPython, el resultado para invocar sigue siendo la test : In [10]: import foo In [11]: foo.foo() test Luego uso: In [15]: del foo In [16]: […]

Reglas generales sobre cuándo usar la sobrecarga de operadores en Python

Por lo que recuerdo de mi clase de C ++, el profesor dijo que la sobrecarga del operador es buena, pero dado que se necesita bastante pensamiento y código para cubrir todos los casos finales (p. Ej., Cuando se sobrecarga + es probable que también desee sobrecargar ++ y += , y también asegúrese de […]

¿Por qué Python tiene un método de operador __ne__ en lugar de solo __eq__?

La respuesta aquí proporciona una referencia de referencia a los casos en los que querría que __ne__ devuelva algo más que el inverso lógico de __eq__ , pero no puedo imaginar ningún caso de este tipo. ¿Algún ejemplo?

¿Por qué / cuando en Python `x == y` llama` y .__ eq __ (x) `?

Los documentos de Python establecen claramente que x==y llama x.__eq__(y) . Sin embargo, parece que en muchas circunstancias, lo contrario es cierto. ¿Dónde está documentado cuándo o por qué sucede esto, y cómo puedo averiguar con certeza si los métodos __cmp__ o __eq__ mi objeto se __cmp__ ? Edición: Solo para aclarar, sé que __eq__ […]

Uso de la representación __str__ para imprimir objetos en contenedores en Python

He notado que cuando una instancia con un método __str__ sobrecargado se pasa a la función de print como un argumento, se imprime según lo previsto. Sin embargo, al pasar un contenedor que contiene una de esas instancias para print , utiliza el método __repr__ lugar. Es decir, print(x) muestra la representación de cadena correcta […]