Maximum recursion depth exceeded while calling a Python object
See Python: Tips and Tricks for similar articles.When working with Python properties, you might find yourself getting a “maximum recursion depth exceeded while calling a Python object” error. Here’s an example of code that will cause this error:
class Person:
def __init__(self, name):
self.name = name
def set_name(self, name):
self.name = name
def get_name(self):
return self.name
name = property(get_name, set_name)
serena = Person('Serena')
We’ve used the property()
function to tell Python that the way to get the value of self.name
is to call the get_name()
function. But within the get_name()
function, we try to return self.name
. To find out the value of self.name
, Python calls the get_name()
function again, which again tries to return self.name
. And we find ourselves in an endless loop:
The fix is to use a pseudo-private attribute: _name
and use get_name()
to retrieve self._name
and set_name()
to set self._name
, like this:
class Person:
def __init__(self, name):
self._name = name
def set_name(self, name):
self._name = name
def get_name(self):
return self._name
name = property(get_name, set_name)
serena = Person("Serena")
print(serena.name)
serena.name = "Serena Williams"
print(serena.name))
This will print:
Serena
Serena Williams
Related Articles
- Fixing WebVTT Times with Python
- Using Python to Convert Images to WEBP
- Scientific Notation in Python
- Understanding Python’s __main__ variable
- Converting Leading Tabs to Spaces with Python
- pow(x, y, z) more efficient than x**y % z and other options
- A Python Model for Ping Pong Matches
- Bulk Convert Python files to IPython Notebook Files (py to ipynb conversion)
- Python’s date.strftime() slower than str(), split, unpack, and concatenate?
- Basic Python Programming Exercise: A Penny Doubled Every Day
- Bi-directional Dictionary in Python
- How to find all your Python installations on Windows (and Mac)
- Associate Python Files with IDLE
- Change Default autosave Interval in JupyterLab
- Python: isdigit() vs. isdecimal()
- Python Clocks Explained
- Python Color Constants Module
- Maximum recursion depth exceeded while calling a Python object (this article)
- When to use Static Methods in Python? Never
- Finally, a use case for finally – Python Exception Handling
- Creating an Email Decorator with Python and AWS
- Python Coding Challenge: Two People with the Same Birthday
- How to Create a Simple Simulation in Python – Numeric Data
- Collatz Conjecture in Python
- Simple Python Script for Extracting Text from an SRT File
- Python Virtual Environments with venv
- Mapping python to Python 3 on Your Mac
- How to Make IDLE the Default Editor for Python Files on Windows
- How to Do Ternary Operator Assignment in Python
- How to Convert Seconds to Years with Python
- How to Create a Python Package
- How to Read a File with Python
- How to Check the Operating System with Python
- How to Use enumerate() to Print a Numbered List in Python
- How to Repeatedly Append to a String in Python
- Checking your Sitemap for Broken Links with Python
- How to do Simultaneous Assignment in Python
- Visual Studio Code - Opening Files with Python open()
- How to Slice Strings in Python
- How Python Finds Imported Modules
- How to Merge Dictionaries in Python
- How to Index Strings in Python
- How to Create a Tuple in Python