使用默认值的Python构造函数?

使用默认值的Python构造函数?,python,Python,因此,我的任务是创建一个具有属性“name”和“fuel”的Ship类。名称的默认值应为“Enterprise”,fuel的默认值应为0。我必须创建一个没有参数的对象,每个参数都有,并且两者都有。唯一不起作用的就是那个只有燃料的,我不知道为什么 这是我的密码: class Ship(object): def __init__(self, name = "Enterprise", fuel = 0): self.name = name self.fuel

因此,我的任务是创建一个具有属性“name”和“fuel”的Ship类。名称的默认值应为“Enterprise”,fuel的默认值应为0。我必须创建一个没有参数的对象,每个参数都有,并且两者都有。唯一不起作用的就是那个只有燃料的,我不知道为什么

这是我的密码:

class Ship(object):

    def __init__(self, name = "Enterprise", fuel = 0):
        self.name = name
        self.fuel = fuel

    def status(self):
        if self.fuel < 0:
            self.fuel = 0
        print self.name, "\nFuel:", self.fuel, "\n"

#main

ship1 = Ship()
ship1.status()
ship2 = Ship("Space Ship1")
ship2.status()
ship3 = Ship(10)
ship3.status()
ship4 = Ship("Space Ship2", 10)
ship4.status()
第三个是打印燃料作为名称,并将燃料默认为0,这是不正确的。如何修复它?

ship3=Ship(10)
中,第一个参数
10
是船名

您可能需要使用
ship3=Ship(fuel=10)



虽然没有直接关系,但仍然很重要。请记住,如果使用可变对象作为默认参数(在示例中没有),则这些参数将被计算一次,而不是每次调用。

正如@Hyperboreus所指出的,您可以显式地将值分配给构造函数中的参数。如果未指定,则将从左到右分配它们,然后对右侧剩余的所有对象使用默认值。
Enterprise 
Fuel: 0 

Space Ship1 
Fuel: 0 

10 
Fuel: 0 

Space Ship2 
Fuel: 10