class ClassName:
...class 내용 코드들
참고로 class 이름은 각 단어의 앞글자를 대문자로 사용합니다.
Car class는 다음처럼 정의 할 수 있습니다.
class Car:
pass
class가 정의되면, class로 부터 실체화(instantiate) 할 수 있습니다. 클래스를 실체화 하는 방법은 간단합니다. 다음과 같이 함수를 호출 하듯이 클래스도 호출 하면 됩니다.
hyundai = Car()
bmw = Car()
Car class를 실체(instance)화 한것이 hyundai와 bmw라는 객체(object) 인것입니다.
class에 정의되는 공통 요소들을 전문어로 class의 attribute(성질 혹은 속성) 이라고 합니다.
모든 자동차는 다음과 같은 공통 요소를 가지고 있습니다.
위 3개의 속성들을 class에서 정의하기 위해서는 다음과 같이 init 함수를 통해서 정의 해주면 됩니다.
(참고로 class 안에서 정의해주는 함수(function)는 function이라고 하지 않고 method 라고 합니다)
class Car: def __init__(self, maker, model, horse_power): self.maker = maker self.model = model self.horse_power = horse_power
먼저 init 메소드의 이름을 자세히 보겠습니다. init 이라는 단어의 앞 뒤에 밑줄 2개가 있습니다.
이렇게 앞뒤로 밑줄 2개가 있는 메소드들을 special methods라고 합니다. 이들은 특별 취급을 받습니다.
그 중 init 메소드는 class가 실체화 될때 사용되는 함수 입니다.
```class Car: def __init__(self, maker, model, horse_power): self.maker = maker self.model = model self.horse_power = horse_power
클래스에서 init 말고도 다른 메소드를 원하는 대로 추가할 수 있습니다.
Method와 attribute(속성)의 차이는 명사와 동사의 차이라고 생각하시면 됩니다.
속성은 해당 객체의 이름 등의 정해진 성질인 반면에 메소드는 move, eat 등 객체가 행할 수 있는 어떠한 action같은 느낌이라고 생각할 수 있습니다.
그럼 자동차가 할 수 있는 action은 무엇이 있을까요?
움직이기, 멈추기, 경적 울리기 등이 있을 수 있습니다.
그럼 "경적 울리기"를 메소드로 추가해 보겠습니다.
class Car: def __init__(self, maker, model, horse_power): self.maker = maker self.model = model self.horse_power = horse_power def honk(self): return "빠라바라빠라밤"
honk 메소드에도 self 가 들어가 있는걸 볼 수 있습니다.
모든 메소드에는 self 파라미터가 첫번째 파라미터로 들어가야 합니다.
honk 함수는 다음 처럼 사용할 수 있습니다.
hyundai = Car("현대", "제네시스", 500) hyundai.honk() "빠라바라빠라밤"
이렇게 객체에서 메소드를 사용할때는 dot(.) 을 사용하여 객체를 호출 합니다. 즉 <객체>.<메소드> 이를 dot notation 이라고 합니다.
자, 근데 이제 우리나라 법이 바뀌어서 모든 차는 경적소리에 해당 차의 회사명이 들어가야 한다고 합시다.
예를 들어, 현대차이 경적소리에는 "현대 빠라바라빠라밤" 이라고 나야 합니다.
근데 honk 메소드에서 해당 객체의 회사 정보를 어떻게 알 수 있을까요?
다행히도 init 메소드에서 self 객체에 해당 정보들을 저장해 놓았기 때문에 다음처럼 사용하면 됩니다
class Car: def __init__(self, maker, model, horse_power): self.maker = maker self.model = model self.horse_power = horse_power def honk(self): return f"{self.maker} 빠라바라빠라밤"
```hyundai = Car("현대", "제네시스", 500) hyundai.honk() "현대 빠라바라빠라밤"