所以,我的任务是创建一个具有“名称”和“燃料”属性的Ship类。名称应该具有默认值“Enterprise”,并且燃料应该具有默认值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()
这就是输出的内容:
Enterprise
Fuel: 0
Space Ship1
Fuel: 0
10
Fuel: 0
Space Ship2
Fuel: 10
第三个是打印燃料作为名称,并将燃油默认为0,这是不对的。我该如何解决?
答案 0 :(得分:6)
在ship3 = Ship(10)
中,第一个参数10
是船舶的名称。
您可能想要使用ship3 = Ship(fuel=10)
。
没有直接关系,但重要的是。请记住,如果您使用可变对象作为默认参数(在您的示例中不是这样),那么这些参数将被评估一次而不是每次调用。