TypeError: main() missing 1 required positional argument: 'op' code example
Example 1: python missing 1 required positional argument:
def your_method(self, arg1, arg2): # you must add the "self" argument in 1st position
# This kind of error happens when working with classes
# When you create methods for a class, you must always pass self as the first argument
# self designates the object in which it is called
# for instance :
class Dog: # let create a class Dog
def __init__(self, color, age): # when you create a new Dog object, two parameters are required
self.color = color # here, whe use self to attach the attribute to this Dog object
self.age = age
self.bark("Woof")
def bark(self, message): # your error might come from the fact you forgot to add the self element as the first argument in, at least, one method
print(message)
# This is a very simple example but it stays true for every class
# You have to pass self as the first argument for each method
Example 2: python missing 1 required positional argument:
"""
This might pop up if you're trying to use a class directly,
rather than instantiating it
"""
class MyClass:
def __init__(self, attr) -> None:
self.attr = attr
def get_attr (self):
self.attr
# CORRECT
myclass = MyClass(1)
print (type(myclass)) # <class '__main__.MyClass'>
print (myclass.get_attr()) # 1
# INCORRECT
myclass = MyClass
print (type(myclass)) # <class 'type'>
print (myclass.get_attr())
# TypeError: get_attr() missing 1 required positional argument: 'self'
# INCORRECT (effectively the same as above)
print (type(MyClass)) # <class 'type'>
print (MyClass.get_attr())
# TypeError: get_attr() missing 1 required positional argument: 'self'