TypeError:“ int”对象不可调用
class Car():
def __init__(self, make, model, year):
"""initialize attribuites to describe a car"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
self.increment_odometer = 0
def update_odometer(self, mileage):
"""
Set the odometer reading to the given value.
Reject the change if it attempts to roll the odometer back.
"""
if mileage >= self.odometer_reading:
self.odometer_reading = mileage
else:
print("You cannot roll back the odometer.")
def read_odometer(self):
"""print at statement which shows the car's miles"""
print("This car has " + str(self.odometer_reading) + " " + "miles on it.")
def get_descriptive_name(self):
"""Return a neatly formatted descriptive name."""
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name.title()
def increment_odometer(self, miles):
"""Add the given amount to the odometer reading."""
self.odometer_reading += miles
my_old_car = Car ('subaru', 'outback', 2013)
print (my_old_car.get_descriptive_name())
my_old_car.update_odometer(23500)
my_old_car.read_odometer()
my_old_car.increment_odometer(100)
my_old_car.read_odometer()
输出:
2013 Subaru Outback
This car has 23500 miles on it.
Traceback (most recent call last):
File "cars.py", line 42, in <module>
my_old_car.increment_odometer(100)
TypeError: 'int' object is not callable
答案 0 :(得分:0)
如前所述,您可以在__init__
中为increment_odometer对象定义一个名称,然后再定义一个具有相同名称的方法。只需删除self.increment_odometer = 0
__init__
class Car():
def __init__(self, make, model, year):
"""initialize attribuites to describe a car"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
# self.increment_odometer = 0 ----> remove this line
def update_odometer(self, mileage):
"""
Set the odometer reading to the given value.
Reject the change if it attempts to roll the odometer back.
"""
if mileage >= self.odometer_reading:
self.odometer_reading = mileage
else:
print("You cannot roll back the odometer.")
def read_odometer(self):
"""print at statement which shows the car's miles"""
print("This car has " + str(self.odometer_reading) + " " + "miles on it.")
def get_descriptive_name(self):
"""Return a neatly formatted descriptive name."""
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name.title()
def increment_odometer(self, miles):
"""Add the given amount to the odometer reading."""
self.odometer_reading += miles
my_old_car = Car ('subaru', 'outback', 2013)
print (my_old_car.get_descriptive_name())
my_old_car.update_odometer(23500)
my_old_car.read_odometer()
my_old_car.increment_odometer(100)
my_old_car.read_odometer()