0

I made following 3 classes. India is parent class of States and States is parent class of District. I define 1 object of District class. When I try to run method of India class it gives an error. Please help me how to run it.

class India:
    def __init__(self):
        print("Country is India")
    def functionofindia(number):
        rvalue=number*2
        return rvalue   

    
class States(India):
    def __init__(self,nameofstate):
        super().__init__()
        print("state is {}".format(nameofstate))


class District(States):
    def __init__(self,nameofstate, nameofdistrict):
        super().__init__(nameofstate)
        print("District is {}".format(nameofdistrict))


HP=District("Himachal Pradesh","Mandi")
print(HP.functionofindia(2))

The Error is:

Country is India
state is Himachal Pradesh
District is Mandi
Traceback (most recent call last):
  File "c:\Users\DELL\OneDrive\Desktop\practice\oops.py", line 23, in <module>
    print(HP.functionofindia(2))
TypeError: functionofindia() takes 1 positional argument but 2 were given
quamrana
  • 37,849
  • 12
  • 53
  • 71

1 Answers1

3

To use a class method like this you should pass self as the first argument in the method definition. So your class India becomes:

class India:
    def __init__(self):
        print("Country is India")
    def functionofindia(self, number):
        rvalue=number*2
        return rvalue

When the method is not relevant to any attribute of the class, you could also replace it with a static method. See more about static methods here. India with a static method:

class India:
    def __init__(self):
        print("Country is India")

    @staticmethod
    def functionofindia(number):
        rvalue=number*2
        return rvalue
Jan Willem
  • 820
  • 1
  • 6
  • 24