python type_error ai_generated true

TypeError: function() takes 0 positional arguments but 1 was given

ID: python/typeerror-takes-positional-args

Also available as: JSON · Markdown
95%Fix Rate
95%Confidence
50Evidence
2023-01-01First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
311 active

Root Cause

Too many arguments passed. Common: missing self in class method, or calling staticmethod wrong.

generic

Workarounds

  1. 95% success If class method, add 'self' as first parameter
    class Foo:
        def method(self, x):  # not: def method(x):

    Sources: https://docs.python.org/3/tutorial/classes.html#method-objects

  2. 90% success If decorator issue, check @staticmethod vs @classmethod vs regular method
    # @staticmethod: no self, called via Class.method()
    # @classmethod: cls as first arg, called via Class.method()
    # Regular method: self as first arg, called via instance.method()
    class Foo:
        @staticmethod
        def no_self(): pass
        def needs_self(self): pass

    Sources: https://docs.python.org/3/library/functions.html#staticmethod

Dead Ends

Common approaches that don't work:

  1. Add *args to accept anything 75% fail

    Hides the real issue — wrong number of args means a bug

  2. Remove extra arguments from the call 50% fail

    May work but check if the function signature is wrong instead

Error Chain

Leads to: