Here is a test class that I wrote to became familiar with @properties and setter functionality in Python script:
class Test(object):
def __init__(self, value):
self.x = value
@property
def x(self):
return self.x
@x.setter
def x(self, value):
self.x = value
The problems is that when I want to create an object from my class, I face the following error:
>>> t = Test(1)
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
t = Test(1)
File "<pyshell#18>", line 3, in __init__
self.x = value
File "<pyshell#18>", line 9, in x
self.x = value
File "<pyshell#18>", line 9, in x
#A bunch of lines skipped
RuntimeError: maximum recursion depth exceeded
>>>
self._xinstead ofself.xfor private member. By naming both member and propertyxproperty shadows member, andreturn self.xin getter body calls itself.