TypeError: got multiple values for argument in Python

When working with functions and classes in Python, you may encounter the “TypeError: got multiple values for argument” error.

This error occurs when you pass the same argument multiple times in a function call, either by using both a positional and a keyword argument or by passing self as a variable in a class method.

In this post, we will explore different ways to solve this error and prevent it from happening in the future.

Understanding the error TypeError: got multiple values for argument in Python

The “TypeError: got multiple values for argument” error occurs when you pass the same argument multiple times in a function call. This can happen in two ways:

  • When passing a positional and a keyword argument for the same variable.
def get_employee(name, **kwargs):
    return {'name': name, **kwargs}

result = get_employee('Alice', name='Alice')
print(result)

In the example above, we pass the name argument as both a positional and a keyword argument, which causes the error.

  • When passing self as a variable in a class method.
class Employee():
    def get_name(name=None):
        return name

emp1 = Employee()
print(emp1.get_name(name='Alice'))

In the example above, we forgot to specify self as the first argument in the get_name method. When we call an instance method, Python automatically passes self as the first argument to the method. In this case, we pass name=’Alice’ as a value for the same argument, causing the error.

[Fixed]: Component cannot be used as a JSX component in React

Solving the error TypeError: got multiple values for argument in Python

To solve the error, you can take the following steps:

  • Remove the keyword argument from the function call.
def get_employee(name, **kwargs):
    return {'name': name, **kwargs}

result = get_employee('Alice')
print(result)

In this example, we remove the name keyword argument from the function call, and the error is resolved.

  • Pass the argument as a keyword argument only.
def get_employee(name, **kwargs):
    return {'name': name, **kwargs}

result = get_employee(name='Alice', salary=100)
print(result)

In this example, we pass the name argument as a keyword argument only, avoiding the error.

  • Specify self as the first argument in a class method.
class Employee():
    def get_name(self, name=None):
        return name

emp1 = Employee()
print(emp1.get_name(name='Alice'))

In this example, we specify self as the first argument in the get_name method. This prevents Python from passing self and name=’Alice’ as values for the same argument, avoiding the error.

It is important to note that you should only specify self as the first argument in instance methods (methods that you call on a class instance). If you have a basic function, you should not specify a self argument.

Conclusion on TypeError: got multiple values for argument in Python

The “TypeError: got multiple values for argument” error occurs when you pass the same argument multiple times in a function call, either by using both a positional and a keyword argument or by passing self as a variable in a class method.

To solve this error, you can remove the keyword argument from the function call, pass the argument as a keyword argument only, or specify self as the first argument in a class method. By following these steps and being mindful of how you pass arguments in your function calls, you can avoid this error and improve the readability and maintainability of your code.

Leave a Reply