Module (39%)
Section (41%)

Herencia: el operador is

También existe un operador de Python que vale la pena mencionar, ya que se refiere directamente a los objetos: aquí está:

objetoUno is objetoDos

El operador is verifica si dos variables (en este caso objetoUno y objetoDos) se refieren al mismo objeto.

No olvides que las variables no almacenan los objetos en sí, sino solo los identificadores que apuntan a la memoria interna de Python.

Asignar un valor de una variable de objeto a otra variable no copia el objeto, sino solo su identificador. Es por ello que un operador como is puede ser muy útil en ciertas circunstancias.

Echa un vistazo al código en el editor. Analicémoslo:

  • Existe una clase muy simple equipada con un constructor simple, que crea una sola propiedad. La clase se usa para instanciar dos objetos. El primero se asigna a otra variable, y su propiedad val se incrementa en uno.
  • Luego, el operador is se aplica tres veces para verificar todos los pares de objetos posibles, y todos los valores de la propiedad val son mostrados en pantalla.
  • La última parte del código lleva a cabo otro experimento. Después de tres tareas, ambas cadenas contienen los mismos textos, pero estos textos se almacenan en diferentes objetos.

El código imprime:

False False True 1 2 1 True False

Los resultados prueban que ob1 y ob3 son en realidad los mismos objetos, mientras que str1 y str2 no lo son, a pesar de que su contenido sea el mismo.



Code

class ClaseMuestra:
def __init__(self, val):
self.val = val

ob1 = ClaseMuestra(0)
ob2 = ClaseMuestra(2)
ob3 = ob1
ob3.val += 1

print(ob1 is ob2)
print(ob2 is ob3)
print(ob3 is ob1)
print(ob1.val, ob2.val, ob3.val)

str1 = "Mary tenía un "
str2 = "Mary tenía un corderito"
str1 += "corderito"

print(str1 == str2, str1 is str2)
{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×