[英]Why Python keeps telling me missing positional argument even the parameter already has the positional argument?
我是 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 my_new_car.increment_odometer().
但是python總是告訴我:缺少1個必需的位置參數:'miles'而python運行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())
有專家能告訴我是什么問題導致了這種情況的發生嗎?
打印(my_new_car.increment_odometer(1000))
這是我的問題的解決方案。
"""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.mile=0 # add one more variable
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):
"""Add the given amount to the odometer reading."""
self.odometer_reading = self.odometer_reading+miles
# set this variable as the attribute for the function of mileage_increament
self.mile = self.mile+miles
return('This car increase another ' + str(miles)+' mileages in this 2 months.')
def mileage_increament(self):
return('This car increase another ' + str(self.mile)+' mileages in this 2 months.')
my_new_car = Car('Acura', 'TSX', 2010)
my_new_car.update_odometer(20000)
my_new_car.increment_odometer(2000)
print(my_new_car.get_descriptive_name())
print(my_new_car.read_odometer())
print(my_new_car.mileage_increament()) #the attribute is come from increment_odometer(2000)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.