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 |