【发布时间】:2021-01-02 19:57:34
【问题描述】:
我是一名经验有限的 Python-3 新手。 有人可以回答我:为什么 Python 一直告诉我我的代码缺少位置参数,即使参数已经有位置参数? 这是我的代码
"""A simple attempt to represent a car."""
def __init__(self, manufacturer, model, year):
"""Initialize attributes to describe a car."""
self.manufacturer = manufacturer
self.model = model
self.year = year
self.odometer_reading = 0
self.miles=0
def get_descriptive_name(self):
"""Return a neatly formatted descriptive name."""
long_name = str(self.year) + ' ' + self.manufacturer + ' ' + self.model
return long_name.title()
def read_odometer(self):
"""Print a statement showing the car's mileage."""
return("This car now has " + str(self.odometer_reading) + " miles on it.")
def update_odometer(self, mileage):
if mileage >= self.odometer_reading:
self.odometer_reading = mileage
else:
print("You can't roll back an odometer!")
def increment_odometer(self, miles):
self.odometer_reading += miles
return('This car increase another ' + str(miles)+' mileages in this 2 months.')
my_new_car = Car('Acura', 'TSX', 2010)
my_new_car.update_odometer(20000)
my_new_car.increment_odometer(1000)
print(my_new_car.get_descriptive_name())
print(my_new_car.read_odometer()) #until this line the program running is fine
print(my_new_car.increment_odometer()) # Problem shows up!!!!!!
我为 my_new_car.increment_odometer(). 分配了一个参数 (1000) 但 python 总是告诉我:缺少 1 个必需的位置参数:'miles' while python run print(my_new_car.increment_odometer()).
我确实将值 1000 传递给 my_new_car.increment_odometer() 。所以我认为print(my_new_car.increment_odometer()) 会自动看起来像print(my_new_car.increment_odometer(1000))。但是,实际上并没有。
print(my_new_car.get_descriptive_name()) print(my_new_car.read_odometer()) 这两个函数工作正常。 python 自动将 ('Acura', 'TSX', 2010) 和 (20000) 分配给参数。为什么my_new_car.increment_odometer(1000)不能给print(my_new_car.increment_odometer())赋值
有专家能告诉我是什么问题导致这种情况发生吗?
【问题讨论】:
-
您已经定义了接受参数的函数:
def increment_odometer(self, miles)。如果你没有通过my_new_car.increment_odometer()向函数传递任何东西,你希望在这里发生什么:self.odometer_reading += miles? -
不,这是两个不同的函数调用。
-
print(my_new_car.get_descriptive_name()) print(my_new_car.read_odometer())但这两个功能工作正常。 python 自动为参数分配('Acura', 'TSX', 2010) and (20000)。为什么`my_new_car.increment_odometer(1000)can assign value toprint(my_new_car.increment_odometer())``` -
您已经在调用
.read_odometer(),它会打印该值。您可以轻松地print(my_new_car.odometer_reading)- 但如果您需要 StackOverflow 上的人告诉您,我强烈建议您返回课程材料并重新阅读,或者遵循一些有关 Python 和 Python OO 基础的教程。 -
@Grismar,很抱歉让您感到困惑。我想我已经找到了答案。可以打印
print(my_new_car.get_descriptive_name()) print(my_new_car.read_odometer())的原因是因为它们具有来自其他函数的属性。print(my_new_car.increment_odometer())无法打印,因为它没有自己的打印属性。应该多注意函数属性的知识。谢谢你激励我。
标签: python python-3.x return