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: - quality - reliability - correctness - external/cwe/cwe-628 Query suites: - python-code-quality.qls - 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.