Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele @property | Encapsulation
In-Depth Python OOP

book
@property

@property is a decorator that modifies the method inside a class to the class property.

To create the property, you should create a method with the @property decorator above.

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)
123456789101112131415
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)
copy

In the example above, you can see a cinema hall that has attributes rows and seats_in_row. The capacity property returns the total number of seats in the hall. It wouldn't make sense to create a separate attribute capacity because if we change the number of rows, we would have conflicting values. Specifically, no actions are performed with the class; only one of the hall's properties is returned.

Properties should have a specific logic: they should return a certain attribute of the class, unlike methods that are used to perform specific actions with the class.

question mark

How to define a new property?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 7

Kysy tekoälyä

expand
ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

some-alt