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

@property
def name(self):                        # name = property(name)
    'Dokumentacja właściwości name'
    print('pobieranie...')
    return self._name

@name.setter
def name(self, value):                 # name = name.setter(name)
    print('modyfikacja...')
    self._name = value

@name.deleter
def name(self):                        # name = name.deleter(name)
    print('usunięcie...')
    del self._name

bob = Person('Robert Zielony')         # bob ma zarządzany atrybut
print(bob.name)                        # Wykonuje komponent getter dla name (pierwszy dostęp do name)
bob.name = 'Robert A. Zielony'         # Wykonuje komponent setter dla name (drugi dostęp do name)
print(bob.name)
del bob.name                           # Wykonuje komponent deleter dla name (trzeci dostęp do name)

print('-'*20)
anna = Person('Anna Czerwona')         # anna także dziedziczy właściwość
print(anna.name)
print(Person.name.__doc__)             # Lub help(Person.name)
