簡體   English   中英

為什么 Python 一直告訴我缺少位置參數,即使參數已經有位置參數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM