Conteúdo do Curso
Programação Orientada a Objetos em Python Avançado
Programação Orientada a Objetos em Python Avançado
@propriedade
@property
é um decorador que modifica o método dentro de uma classe para propriedade da classe.
Para criar a propriedade, você deve criar um método com o decorador @property
acima.
class CinemaHall: def __init__(self, rows, seats_in_row): self.rows = rows self.seats_in_row = seats_in_row @property def capacity(self): return self.rows * self.seats_in_row hall = CinemaHall(24, 12) print(hall.capacity) hall.rows = 5 hall.seats_in_row = 11 print(hall.capacity)
No exemplo acima, você pode ver uma sala de cinema que possui atributos rows
e seats_in_row
. A propriedade capacity
retorna o número total de assentos na sala. Não faria sentido criar um atributo separado capacity
, pois se mudássemos o número de rows
, teríamos valores conflitantes. Especificamente, nenhuma ação é realizada com a classe; apenas uma das propriedades da sala é retornada.
Propriedades devem ter uma lógica específica: elas devem retornar um certo atributo da classe, diferentemente de métodos que são usados para realizar ações específicas com a classe.
Obrigado pelo seu feedback!