2013-11-05 2 views
0

문제는파이썬은 "클래스"단어 promblem는

다음 데이터 속성을하고있다라는 클래스 자동차 쓰기 읽

__year_model 자동차의 메이크업에 대한

__make ((차의 년 모델) 차량의 현재 속도에 대한 자동차)

__speed()

T의 그는 Car 클래스에 __init__ 메소드를 가지고 있어야합니다.이 메소드는 자동차의 연도 모델을 받아들이고 인수로 만듭니다. 또한 __speed 데이터 속성에 0을 지정해야합니다.

클래스는 또한 다음과 같은 방법이 있어야합니다

하기 • 가속 방법은 데이터가 호출 될 때마다 속성 속도 5를 추가해야 가속화.

• 브레이크 브레이크 방법은 호출 할 때마다 속도 데이터 속성에서 5를 빼야합니다.

는 get_speed 있습니다 • get_speed 방법은 자동차 객체를 생성하는 프로그램을 설계, 현재 속도를

다음을 반환하고 다섯 번 단축 방법을 호출한다. 가속 메서드를 호출 할 때마다 자동차의 현재 속도를 가져 와서 표시합니다. 그런 다음 5 번 브레이크 방법을 호출하십시오. 브레이크 메서드를 호출 한 후 차의 현재 속도를 가져 와서 표시합니다.

나는 오류 TypeError: __init__() missing 3 required positional arguments: 'year', 'make', and 'speed'

내 코드지고있어 다음 Car 클래스

#create class called car 

class Car: 
    def __init__(self,year,make,speed): 
     self.__year_model=year 
     self.__make=make 
     self.__speed=0 

    #set the arguments for speed,year, and make 
    def set_year_model(self,year): 
     self.__year_model=year 

    def set_make(self,make): 
     self.__make=make 

    def set_speed(self,speed): 
     self.__speed=0 

    #the returns for speed, year, and make 
    def get_year_model(self): 
     return self.__year_model 

    def get_make(self): 
     return self.__make 

    def get_speed(self): 
     return self.__speed 


    #methods 
    def accelerate(self): 
     self.speed +=5 

    def brake(self): 
     self.speed-=5 

    def get_speed(self): 
     return self.speed 

#actuall program 
#create car object 
def main(): 
    my_car=Car() 

    year=print(input('car year: ')) 
    make=print(input('car make: ')) 
    speed= print('Current speed is 0') 

    #accelerate 5 times 

    my_car.accelerate() 
    print('My current speed:',my_car.get_speed()) 
    my_car.accelerate() 
    print('My current speed:',my_car.get_speed()) 
    my_car.accelerate() 
    print('My current speed:',my_car.get_speed()) 
    my_car.accelerate() 
    print('My current speed:',my_car.get_speed()) 
    my_car.accelerate() 
    print('My current speed:',my_car.get_speed()) 

    #brake five times 
    my_car.brake() 
    print('My current speed after brake:',my_car.get_speed()) 
    my_car.brake() 
    print('My current speed after brake:',my_car.get_speed()) 
    my_car.brake() 
    print('My current speed after brake:',my_car.get_speed()) 
    my_car.brake() 
    print('My current speed after brake:',my_car.get_speed()) 
    my_car.brake() 
    print('My current speed after brake:',my_car.get_speed()) 

main() 
+5

실제로 진행중인 코스가 실제로 파이썬 코스입니까? 그것들은'get_'과'set_' 모두 필요하지 않습니다 ... 사실, 파이썬에서 클래스를 사용하는 것은 다소 끔찍한 소개입니다 ... –

+1

또한, 밑줄 속성은 실제로 나쁜 형태입니다. 왜 특별히 필요로하는지 모를 경우에는 사용하지 말아야합니다. – zigg

답변

0

오류 메시지는 무엇이 잘못되었는지를 정확하게 알려줍니다. 당신은 세 개의 매개 변수를 필요로 Car을 정의했습니다 :

def __init__(self, year, make, speed): 

을하지만 당신은 하나를 만들 때, 당신은 그 어떤 통과하지 않습니다

my_car = Car() 

보기를? 괄호 안의 것은 없습니다.분명히 다음과 같아야합니다.

my_car = Car(year, make, speed) 

물론 이러한 항목을 아직 요청하지 않았으므로 그렇게 할 수 없습니다. 그러므로 이후에 my_car을 작성하여 사용자로부터 정보를 얻으십시오.

+0

예, 코드에 다른 문제가 있습니다. 예를 들어, 모든'input's의 앞쪽에'print'가 있습니다. 그리고 이제 분명히'int'를 넣었지만 잊어 버렸습니다. 괄호를 닫으십시오. (실제로 코드를 게시하지 않았습니다.)하지만 질문 한 것과는 아무런 관련이 없습니다. – kindall

+0

오케이 그 말이 맞는 – nixvaldez

+0

어떻게 인쇄되고있는 "none"을 제거 할 수 있습니까? – nixvaldez

2

__init__ 당신이 어떤을 통과하지 않는 세 개의 인수를 취합니다.

year=input('car year: ')) 
make=input('car make: ')) 
speed=0 
print'Current speed is', speed 
#actuall program 
#create car object 
def main(): 
my_car=Car(year, make, speed) 

당신은 input 전에 그 print 문을 필요가 없습니다. 나는 당신이 그걸로 무엇을하고 있는지 확실하지 않습니다. 또한 speed= print('Current speed is 0')이 올바르지 않습니다.

이 함수는 속도를 항상 0으로 설정합니다. 그러면 사용자가 의도 한 경우 speed 인수를 전달할 필요가 없습니다. init과 똑같은데, 사용 중이거나 사용 중이라면 인수를 전달할 필요가 없습니다.

def set_speed(self,speed): 
    self.__speed=0