问题描述
我是 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)