Wrong name for an argument in a class instantiation¶
ID: py/call/wrong-named-class-argument
Kind: problem
Security severity:
Severity: error
Precision: very-high
Tags:
- reliability
- correctness
- external/cwe/cwe-628
Query suites:
- python-security-and-quality.qls
Click to see the query in the CodeQL repository
Using a named argument whose name does not correspond to a parameter of the __init__
method of the class being instantiated, will result in a TypeError
at runtime.
Recommendation¶
Check for typos in the name of the arguments and fix those. If the name is clearly different, then this suggests a logical error. The change required to correct the error will depend on whether the wrong argument has been specified or whether the wrong class has been specified.
Example¶
class Point(object):
def __init__(self, x, y):
self.x = x
self.y = y
p = Point(x=1, yy=2) # TypeError: 'yy' is not a valid keyword argument
References¶
Python Glossary: Arguments.
Python Glossary: Parameters.
Python Programming FAQ: What is the difference between arguments and parameters?.
The Python Language Reference: Data model: object.init
The Python Tutorial: Classes
Common Weakness Enumeration: CWE-628.