Python property() built-in function

From the Python 3 documentation

Return a property attribute.

Introduction

The property() function is used to create property attributes. A property attribute is a special kind of attribute that has getter, setter, and delete methods. This allows you to add logic to getting, setting, or deleting an attribute’s value.

It’s more common to use the @property decorator, which is a more convenient way to use property().

Example

Here’s an example of using property() to create a read-only attribute:

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

    def get_name(self):
        print("Getting name")
        return self._name

    # Create a property
    name = property(get_name)

p = Person("John")
print(p.name)  # This calls get_name()
Getting name
John

Note: p.name = "Jane" would raise an AttributeError because there is no setter.

And here is the more common way to do it with the @property decorator:

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

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

p = Person("John")
print(p.name)
Getting name
John