类对象获得意外的参数错误

问题描述

我是 Python 新手,正在尝试编写 Python 类代码。但是在下面,对于 car_1、car_2 和 car_3(粗体)的属性,我得到了“意外参数”错误。如何纠正?还是 Pycharm 的问题?谢谢!

import random


class Vehicle:
    def _init_(self,make,model,year,weight):
        self.make = make
        self.model = model
        self.year = year
        self.weight = weight


class Car(Vehicle):
    def _init_(self,weight,is_driving=True,trips_since_maintenance=0,needs_maintenance=False):
        super().__init__(make,weight)
        self.is_driving = is_driving
        self.trips_since_maintenance = 0
        self.needs_maintenance = needs_maintenance

    def drive(self):
        drive = 0
        if drive > 0:
            self.is_driving = True

    def stop(self):
        stop = 0
        while self.drive():
            stop += 1
            break
            self.is_driving = False
            self.trips_since_maintenance += 1
            if self.trips_since_maintenance >= 100:
                self.needs_maintenance = True

    def repair(self):
        self.needs_maintenance = False
        self.trips_since_maintenance = 0


def randomly_drive_car(car):
    drive_times = random.randint(1,101)
    for i in range(drive_times):
        Car.drive()
        Car.stop()


**car_1 = Car('Honda','City','2018','1153 kg')
car_2 = Car('Toyota','Altis','1745 kg')
car_3 = Car('Mazda','_3','2020','1260 kg')**

randomly_drive_car(car_1)
randomly_drive_car(car_2)
randomly_drive_car(car_3)


解决方法

除了你需要为 init 方法添加两个下划线之外,一切都正确。

class Vehicle:
    def __init__(self,make,model,year,weight):
       ...

class Car(Vehicle):
    def __init__(self,weight,is_driving=True,trips_since_maintenance=0,needs_maintenance=False):
    super().__init__(make,weight)

编辑: 在第 42/43 行,您正在调用“Car.drive”,您应该调用“car.drive()”(小写 C),因为您的函数参数称为“car”。通过使用 Car.drive(),您尝试将 drive 方法作为类方法调用。

编辑 2(来自评论):

import random

class Car(Vehicle):

    ...

    def take_trip(self):
        self.trips_since_maintenance += 1
        if self.trips_since_maintenance >= 100:
            self.needs_maintenance = True


def randomly_drive_car(car):
    drive_times = random.randint(1,101)
    for i in range(drive_times):
        car.take_trip()


car_1 = Car('Honda','City','2018','1153 kg')
car_2 = Car('Toyota','Altis','1745 kg')
car_3 = Car('Mazda','_3','2020','1260 kg')

randomly_drive_car(car_1)
randomly_drive_car(car_2)
randomly_drive_car(car_3)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...