Propriedades (properties) são atributos calculados em tempo de execução. As propriedades são criadas através da função / decorador property.
O uso de propriedades permite:
Exemplo de código sem propriedades:
# get_*, set_*...
class Projetil(object):
def __init__(self, alcance, tempo):
self.alcance = alcance
self.tempo = tempo
def get_velocidade(self):
return self.alcance / self.tempo
moab = Projetil(alcance=10000, tempo=60)
print moab.get_velocidade()
166
Exemplo de propriedade através de decorador:
# Exemplo de property de leitura
class Projetil(object):
def __init__(self, alcance, tempo):
self.alcance = alcance
self.tempo = tempo
@property
def velocidade(self):
return self.alcance / self.tempo
moab = Projetil(alcance=10000, tempo=60)
# A velocidade é calculada
print moab.velocidade
166
Exemplo de propriedade através de chamada de função:
# Property de leitura e escrita
class Projetil(object):
def __init__(self, alcance, tempo):
self.alcance = alcance
self.tempo = tempo
# Calcula a velocidade
def getv(self):
return self.alcance / self.tempo
# Calcula o tempo
def setv(self, v):
self.tempo = self.alcance / v
# Define a propriedade
velocidade = property(getv, setv)
moab = Projetil(alcance=10000, tempo=60)
print moab.velocidade
# Muda a velocidade
moab.velocidade = 350
print moab.tempo
166 28
Propriedades são particularmente interessantes para quem desenvolve bibliotecas para serem usadas por outras pessoas.