简体   繁体   中英

Can someone explain to me how to resolve the argument error below with the use of my code?

The error here is on positional argument error where the code can not execute because of the position argument error on this line of code 'Customer_Cars_1 = Customer1.requestCar()'. I got an error of "TypeError: rentCarOnHourlyBasis() missing 1 required positional argument: 'n' " which I am not sure if It has been resolved. I need an explicit explanation on how to resolve all the errors listed above

THE ERROR:

     Traceback (most recent call last):
      File "c:/Users/CRIME ALERT 3/Documents/project for python/car_rent2.py", line 79, in 
<module>
    CarRtl.rentalPackages(Customer_Cars_1)
TypeError: rentalPackages() takes 1 positional argument but 2 were given

MY CODE

class CarRental:   
    def __init__(self, stock):
    
        self.stock = stock

    def displayStock(self):
    
        print(f"Welcome To Ayodeji Autos.... \n \n \nWe have currently {self.stock} cars 
              available to rent\n \n \n")
        return self.stock
 
    def rentalPackages(self):
    
        numCars = CarRental(int(n))
        numCars.rentalPackages
    
        option = int(input('Ayodeji Autos Rental Packages \nOptions: \n 1 - Hourly 
        Basis\n**************************************\nHow long do you want to rent a car: '))
    
        try:
            option = int(option)
        except ValueError:
            print("That's not a positive integer!")
            return 1
    
        if option == 1:
            CarRental.rentCarOnHourlyBasis(numCars) 
    
        else:
            return CarRental.displayStock()

      
def rentCarOnHourlyBasis(self, n):
    
    if n <= 0:
        print('Number of cars should be positive!')
        
    elif n > self.stock:
        print(f'Sorry! We have currently {self.stock} bikes available to rent.')
        return None
    
    else:
        now = datetime.datetime.now()
        print(f'You have rented a {n} car(s) on hourly basis today at {now.hour} hours.')
        print("You will be charged $5 for each hour per car.")
        print("We hope that you enjoy our service.")
        
        self.stock -= n
        return now
    

class Customer:

    def requestCar(self):
                  
        cars = input("How many cars would you like to rent?")
    
        try:
            cars = int(cars)
        except ValueError:
            print("That's not a positive integer!")
            return 1
        if cars < 1:
            print(f"{cars} is an Invalid input. Number of cars should be greater than zero!")
            return 1
        else:
            self.cars = cars
        return self.cars

if __name__ == '__main__':
    stock = 10
    CarRtl = CarRental(stock)
    CarRtl.displayStock()     
    Customer1 = Customer()
    Customer_Cars_1 = Customer1.requestCar()
    CarRtl.rentalPackages(Customer_Cars_1)

In the class CarRental the function rentalPackages(self) takes only one argument that is self where, self represents the instance of object.

If you want to pass another argument in that function you should add one more argument while defining the function. Like this, rentalPackages(self, AnotherArgumentVariableName)

You should add another positional argument as the first argument that is passed in a method is an instance of the object.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM