How '@decorator' actually works?
I just knew it works like this:
def deco(func):...
@deco
def func():...
# same
def func():...
func = deco(func)
But it doesn't work well in '@class.method'
Below is an example:
class Person:
def __init__(self, name):
self._name = name
@property
def name(self):
return self._name
@name.setter
def name(self.value):
self._name = value
class Person:
def __init__(self, name):
self._name = name
## @propery
def name(self):
return self._name
name = property(name)
## @name.setter
def name(self, value):
self._name = value
name = name.setter(name) <----- error
The error here is because name has been changed to point to "def name(self.value):..."
I'd like to know how '@property.method' actually works.
I just guessed like that:
class Person:
def __init__(self, name):
self._name = name
## @propery
def name(self):
return self._name
name = property(name)
## @name.setter
x = name.setter
def name(self, value):
self._name = value
name = x.setter(name)
del x
Is it right or is there other way to work that I don't know?
Thank you for reading!