July 28, 2020
만약 한 단어 이상으로 이루어져 있다면 밑줄(_) 없이 모든 단어를 붙이되 각 단어의 앞 글자는 대문자를 사용
class Car:
pass
bmw = Car()
hyundai = Car()
예를 들어, 자동차는 다음과 같은 공통 요소를 갖을 수 있다.
마력
__init__
함수를 통해 정의 해줘야 한다.class Car:
def __init__(self, maker, model, horse_power):
self.maker = maker
self.model = model
self.horse_power = horse_power
function
이 아닌 method
라고 한다.hyundai = Car("현대", "제네시스", 500)
__init__
method가 호출 되었는데 __init__
이라고 정확히 명시하지 않았지만 class가 실체화 될 때 자동으로 __init__
method가 호출된다.Self
Parameter는 class가 실체화된 object를 넘겨주어야 하며 Python이 자동으로 넘겨준다.Self
Parameter는 항상 __init__
method의 맨 처음 Parameter로 정의 되어야 한다.
def __init__(self, maker, model, horse_power):
💡Class object가
__init__
method에게 인자를 전달하는 과정class Car: def __init__(self, maker, model, horse_power): self.maker = maker self.model = model self.horse_power = horse_power
즉, 위 예시 코드는 매개변수로 넘겨진
maker
,model
,horse_power
값을 동일한 이름으로self
에 저장하는 것을 볼 수 있다.
클래스에서 __init__
메서드 말고 다른 메서드를 추가 할 수 있다. 메서드와 속성의 차이는 명사와 동사의 차이와 같다. 속성은 해당 객체의 이름 등의 정해진 성질인 반면 메서드는 move, eat과 같이 객체가 행할 수 있는 어떠한 액션과 같다. 따라서 honk메서드를 추가 한다면 다음과 같다.
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 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} 빠라바라빠라밤"