Uso Avançado
Nesta etapa, exploraremos alguns usos avançados do operador is.
- Defina uma classe
MyClass com um atributo value.
class MyClass:
def __init__(self, value):
self.value = value
- Defina duas instâncias da classe
MyClass, obj1 e obj2, com o mesmo value.
obj1 = MyClass("Hello")
obj2 = MyClass("Hello")
- Imprima o endereço de memória de
obj1.value e obj2.value usando a função id().
print(id(obj1.value))
print(id(obj2.value))
- Use o operador
is para verificar se obj1.value e obj2.value se referem ao mesmo objeto.
print(obj1.value is obj2.value)
A saída do código acima deve ser True, pois o atributo value é um objeto imutável e ambas as instâncias compartilham o mesmo objeto na memória.
- Agora, defina duas instâncias da classe
MyClass, obj3 e obj4, com um objeto mutável como seu value.
obj3 = MyClass([])
obj4 = MyClass([])
- Imprima o endereço de memória de
obj3.value e obj4.value usando a função id().
print(id(obj3.value))
print(id(obj4.value))
- Use o operador
is para verificar se obj3.value e obj4.value se referem ao mesmo objeto.
print(obj3.value is obj4.value)
A saída do código acima deve ser False, pois o atributo value é um objeto mutável e ambas as instâncias não compartilham o mesmo objeto na memória.