English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
A construção do property() retorna a propriedade do atributo.
A sintaxe do property() é:
property(fget=None, fset=None, fdel=None, doc=None)
Leitura recomendada: Python @property:como usá-lo e por que usá-lo?
property() aceita quatro parâmetros:
fget(opcional) -Função usada para obter o valor do atributo. O padrão é None
fset(opcional) -Função usada para configurar o valor do atributo. O padrão é None
fdel(opcional) -Função usada para deletar o valor do atributo. O padrão é None
doc(opcional) -Uma string que contém a documentação (docstring) do atributo. O padrão é None
property() retorna o atributo propriedade a partir do getter, setter e deleter fornecidos
Se não for fornecido um parâmetro, property() retornará um atributo básico que não contém getter, setter ou deleter
Se não for fornecidodoc,property() usa a docstring da função getter
class Person: def __init__(self, name): self._name = name def get_name(self): print('Obter nome:') return self._name def set_name(self, value): print('Defina o nome como: ' + value) self._name = value def del_name(self): print('Remover nome') del self._name # Usar get_name e set_name para configurar o atributo # e o método del_name() name = property(get_name, set_name, del_name, 'Name property') p = Person('张三') print(p.name) p.name = '李四' del p.name
Resultados de saída
Obter nome: 张三 Defina o nome como: 李四 Remover nome
Aqui,_nameUsada para armazenarPersonVariável privada do nome
Também configuramos:
get_name() é o método de obtenção do nome da pessoa
O método set_name() usado para configurar o nome da pessoa
O método del_name() é usado para deletar o nome da pessoa
Agora, configuramos um novo nome de atributo chamando o método property()
Como mostrado no programa, através da saída de impressão interna, a chamada interna p.name para get name() como getter, set name() como setter e del name() como deleter
Pode-se usar property()Decoradores do Python Pode-se usar @property para atribuir getter, setter e Deleter, em vez de usar.
class Person: def __init__(self, name): self._name = name @property def name(self): print('Obter nome:') return self._name @name.setter def name(self, value): print('Definir nome como: ' + value) self._name = value @name.deleter def name(self): print('Remover nome') del self._name p = Person('王麻子') print('Nome:', p.name) p.name = '李二' del p.name
Resultados de saída
Obter nome: Nome: 王麻子 Definir nome como: 李二 Remover nome
Aqui, não usamos property(), mas sim o decorador @property.
Primeiro, especificamos que o método name() também éPersondo atributo. Pode-se completar essa operação usando o método getter mostrado no programa @property.
A seguir, usamos o nome do atributo para especificar o setter e o deleter.
Isso é feito usando os métodos @name.settersetter e @name.deleterDeleter.
Atenção, usamos o mesmo método name() com definições diferentes para definir getter, setter e deleter.
Agora, a qualquer momento em que usar p.name, ele internamente chama o getter, setter e Deleter apropriados, conforme mostrado na saída de impressão interna do método.