Al crear subclases de tipos incorporados, noté una diferencia bastante importante entre Python 2 y Python 3 en el tipo de retorno de los métodos de los tipos incorporados. El código siguiente ilustra esto para conjuntos:Subclassing builtin types en Python 2 y Python 3
class MySet(set):
pass
s1 = MySet([1, 2, 3, 4, 5])
s2 = MySet([1, 2, 3, 6, 7])
print(type(s1.union(s2)))
print(type(s1.intersection(s2)))
print(type(s1.difference(s2)))
Con Python 2, todos los valores de retorno son de tipo MySet
. Con Python 3, los tipos de devolución son set
. No pude encontrar ninguna documentación sobre el resultado, ni documentación sobre el cambio en Python 3.
De todos modos, lo que realmente me importa es esto: ¿hay una manera simple en Python 3 para obtener el comportamiento visto en Python 2, sin redefinir todos los métodos de los tipos incorporados?
En Python 2 sólo el tipo de 's1' es relevante no es el tipo de s2 '. – agf
Es similar a la forma en que 'False + False' es' 0', no 'False' (' bool' es una subclase de 'int', por cierto). –