Yandex

Python property() Function – Create Managed Attributes



Python property() Function

The property() function in Python is used to create managed attributes in object-oriented programming. It lets you define methods that act like attributes – helpful for adding logic when accessing or updating a value.

Syntax

property(fget=None, fset=None, fdel=None, doc=None)

Parameters:

  • fget – Function to get the value (getter)
  • fset – Function to set the value (setter)
  • fdel – Function to delete the value (deleter)
  • doc – Optional docstring

Returns:

  • A property object that can be assigned to a class attribute

Example: Basic Usage of property()

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

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

    def set_name(self, value):
        print("Setting name...")
        self._name = value

    def del_name(self):
        print("Deleting name...")
        del self._name

    name = property(get_name, set_name, del_name)

Usage:

p = Person("Alice")
print(p.name)      # Getting name... → Alice
p.name = "Bob"     # Setting name...
print(p.name)      # Getting name... → Bob
del p.name         # Deleting name...

Modern Alternative: Using @property Decorator

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

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

    @name.setter
    def name(self, value):
        print("Setting name...")
        self._name = value

    @name.deleter
    def name(self):
        print("Deleting name...")
        del self._name
Getting name...
Setting name...
Deleting name...

Why Use property()?

  • Encapsulation: Control how attributes are accessed or modified
  • Cleaner syntax: Looks like direct attribute access
  • Backward compatibility: Add logic without changing the API

Common Mistakes

  • Not using the underscore convention (e.g., _name) for internal variables
  • Using property() without defining fget – it won’t be readable
  • Using property incorrectly inside __init__

Interview Tip

Interviewers often ask about encapsulation and data hiding. Showing that you know how to use property and @property in Python can demonstrate your grasp of object-oriented principles.

Summary

  • property() lets you control access to attributes in classes.
  • You can use fget, fset, fdel to manage how values are accessed, set, or deleted.
  • The @property decorator is a modern and cleaner alternative.

Practice Problem

Create a class Temperature with a Celsius attribute. Use @property to add a computed Fahrenheit property (read-only).

class Temperature:
    def __init__(self, celsius):
        self._celsius = celsius

    @property
    def fahrenheit(self):
        return (self._celsius * 9/5) + 32

t = Temperature(25)
print(t.fahrenheit)  # Output: 77.0


Welcome to ProgramGuru

Sign up to start your journey with us

Support ProgramGuru.org

You can support this website with a contribution of your choice.

When making a contribution, mention your name, and programguru.org in the message. Your name shall be displayed in the sponsors list.

PayPal

UPI

PhonePe QR

MALLIKARJUNA M