AttributeError
AttributeError: 'str' object has no attribute 'push'
Traceback
Traceback (most recent call last):
File "main.py", line 2, in <module>
items.push(4) # JavaScript syntax
AttributeError: 'str' object has no attribute 'push'What causes this error
An attribute or method was accessed that does not exist on the object's type. This happens from typos, using methods from other languages, or working with an unexpected type.
How to fix it
Check the correct method name for the type using `dir(obj)` or the documentation. Watch for JavaScript/Python method name differences. Verify the variable's type with `type(obj)`. Use IDE autocompletion.
Code that causes this error
items = [1, 2, 3] items.push(4) # JavaScript syntax
Fixed code
items = [1, 2, 3] items.append(4) # Python syntax
About AttributeError
This specific form of AttributeError occurs when you try to use a method or property name that does not exist on the given object type. The error message tells you both the type and the attribute name, making diagnosis straightforward. Common causes include using JavaScript method names in Python (e.g., `.push()` instead of `.append()`, `.length` instead of `len()`), working with the wrong type due to a function returning something unexpected, and typos in method names.
Python 3.10+ provides 'Did you mean?' suggestions when a similar attribute exists, which helps catch typos. This error frequently appears when migrating between programming languages or when mixing up methods from different Python types (e.g., using dict methods on a list or vice versa).
Common scenarios
Calling methods that do not exist on the object's type (e.g., .push() on a list)
Working with None values from functions that did not return explicitly
Using methods from one type on a different type by mistake
Accessing attributes on objects whose type changed due to reassignment