Python构造函数具有默认值?

时间:2014-04-04 20:24:09

标签: python

所以,我的任务是创建一个具有“名称”和“燃料”属性的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,这是不对的。我该如何解决?

1 个答案:

答案 0 :(得分:6)

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

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


没有直接关系,但重要的是。请记住,如果您使用可变对象作为默认参数(在您的示例中不是这样),那么这些参数将被评估一次而不是每次调用。