2014-04-04 4 views
0

그래서 저는 'name'과 'fuel'속성을 가진 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

@Hyperboreus가 지적했듯이 생성자의 매개 변수에 값을 명시 적으로 지정할 수 있습니다. 지정하지 않으면 왼쪽에서 오른쪽으로 할당되고 오른쪽에 나머지 모든 것에 기본값이 사용됩니다. – CoryKramer

답변

6

ship3 = Ship(10)에서 첫 번째 매개 변수 10은 우주선의 이름입니다.

ship3 = Ship(fuel=10)을 사용할 수 있습니다.


직접 관련이 없지만 중요합니다. 당신이 당신의 예제에없는 디폴트 인자로서 가변 객체를 사용한다면, 그것들은 각 호출이 아니라 한번 평가된다는 것을 기억하십시오.

+0

알겠습니다. 고마워요! 그것은 쉬운 수정이었다. –

관련 문제