프로그래밍/Python

[Python] 메소드의 첫번째 Argument ?

삐제제 2020. 11. 24. 06:48
class Car() :
    wheels = 4
    doors = 4
    windows = 4
    seats = 4
    def start():
        print("I started")
        
        
sonata = Car()
sonata.start()

먼저, 메소드란 클래스안에 있는 function을 말합니다. 클래스 밖에있으면 function 안에있으면 Method..

 

 

위 코드를 실행하면 에러를 출력합니다.

start() method 는 0개의 argument를 받는 method 인데, 1개의 argument를 주었다는 에러메시지를 출력합니다.

분명 sonata.start() 를 보면 아무런 argument를 주지않고 있습니다.

 

그런데 어째서 에러가 나는것일까요?

* 그 이유는 파이썬은 메소드를 호출할 때 그 메소드의 인스턴스를 첫번째 argument로 사용하기 때문입니다.

위 코드에서 사실 sonata.start() 는 sonata.start(sonata) 였던 것이죠.

 

class Car() :
    wheels = 4
    doors = 4
    windows = 4
    seats = 4
    def start(sonata):
    	print(sonata)
        print("I started")
        
        
sonata = Car()
sonata.color = "silver"
sonata.start()

코드를 위 처럼 수정하게되면 오류메시지를 출력하지 않습니다.

인스턴스의 주소값과 "I started" 라는 문자열을 출력합니다.

 

class Car() :
    wheels = 4
    doors = 4
    windows = 4
    seats = 4
    def start(sonata):
    	print(sonata.color)
        print("I started")
        
        
sonata = Car()
sonata.color = "silver"
sonata.start()

"silver" 와 "I started" 를 출력하게됩니다.

 

그리고 위의 개념은 python에서만 사용되는 개념입니다.

class Car() :
    wheels = 4
    doors = 4
    windows = 4
    seats = 4
    def start(self):
        print("I started")
        
        
sonata = Car()
sonata.color = "silver"
sonata.start()

그리고 보통 argument 자리에 self 를 넣어 사용합니다 그리고 이건 되게 유용합니다.

 

class Car() :
    wheels = 4
    doors = 4
    windows = 4
    seats = 4
    def start(self):
        print(self.windows)
        
        
sonata = Car()
sonata.color = "silver"
sonata.start()

실행하면 4 라는 숫자가 콘솔에 나타납니다.

 

'프로그래밍 > Python' 카테고리의 다른 글

BeautifulSoup 객체 find() 와 find_all() 차이점  (0) 2020.11.21
Python : string formatting  (0) 2020.10.20
Python : 함수의 Return  (0) 2020.10.20
Python : 함수의 인자(매개변수)  (0) 2020.10.19
Python : 함수  (0) 2020.10.18