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