Resumo : neste tutorial, você aprenderá como usar a classe property() para excluir a propriedade de um objeto.
Para criar uma propriedade de uma classe, você usa o decorador @property . No fundo, o @property
decorador usa a property
classe que possui três métodos: setter, getter e deleter.
Usando o deleter, você pode excluir uma propriedade de um objeto. Observe que o deleter()
método exclui uma propriedade de um objeto, não uma classe .
O seguinte define a Person
classe com a name
propriedade:
from pprint import pprint
class Person:
def __init__(self, name):
self._name = name
@property
def name(self):
return self._name
@name.setter
def name(self, value):
if value.strip() == '':
raise ValueError('name cannot be empty')
self._name = value
@name.deleter
def name(self):
del self._name
Linguagem de código: Python ( python )
Na Person
aula usamos o @name.deleter
decorador. Dentro do deleter, usamos a del
palavra-chave para deletar o _name
atributo da Person
instância.
O seguinte mostra o __dict__
da Person
classe:
pprint(Person.__dict__)
Linguagem de código: Python ( python )
Saída:
mappingproxy({'__dict__': <attribute '__dict__' of 'Person' objects>,
'__doc__': None,
'__init__': <function Person.__init__ at 0x000001DC41D62670>,
'__module__': '__main__',
'__weakref__': <attribute '__weakref__' of 'Person' objects>,
'name': <property object at 0x000001DC41C89130>})
Linguagem de código: Python ( python )
A Person.__dict__
classe tem a name
variável. O seguinte cria uma nova instância da Person
classe:
person = Person('John')
Linguagem de código: Python ( python )
O person.__dict__
tem o _name
atributo:
pprint(person.__dict__)
Linguagem de código: Python ( python )
Saída:
{'_name': 'John'}
Linguagem de código: Python ( python )
O seguinte usa a del
palavra-chave para excluir a name
propriedade:
del person.name
Linguagem de código: Python ( python )
Internamente, o Python executará o deleter
método que exclui o _name
atributo do person
objeto. O person.__dict__
estará vazio assim:
{}
Linguagem de código: Python ( python )
E se você tentar acessar name
a propriedade novamente, receberá um erro:
print(person.name)
Linguagem de código: Python ( python )
Erro:
AttributeError: 'Person' object has no attribute '_name'
Linguagem de código: Python ( python )
Resumo
- Use o decorador deleter para excluir uma propriedade de uma instância de uma classe.