Função built-in property() do Python

Da documentação do Python 3

Retorna um atributo de propriedade.

Introdução

A função property() é usada para criar atributos de propriedade. Um atributo de propriedade é um tipo especial de atributo que possui métodos getter, setter e delete. Isso permite que você adicione lógica à obtenção, definição ou exclusão do valor de um atributo.

É mais comum usar o decorador @property, que é uma maneira mais conveniente de usar property().

Exemplo

Aqui está um exemplo de como usar property() para criar um atributo somente leitura:

class Person:
    def __init__(self, name):
        self._name = name

    def get_name(self):
        print("Obtendo nome")
        return self._name

    # Cria uma propriedade
    name = property(get_name)

p = Person("John")
print(p.name)  # Isso chama get_name()
Obtendo nome
John

Nota: p.name = "Jane" levantaria um AttributeError porque não há um setter.

E aqui está a maneira mais comum de fazer isso com o decorador @property:

class Person:
    def __init__(self, name):
        self._name = name

    @property
    def name(self):
        print("Obtendo nome")
        return self._name

p = Person("John")
print(p.name)
Obtendo nome
John