티스토리 뷰

python lecture/basic

[edu] 클래스(class)

burningrizen 2019. 2. 24. 09:21

다음은 간단한 클래스의 예제이다. 


세부 내용을 살펴보자.


class Dog:
def __init__(self, weight, name):
self.weight = weight
self.name = name

def eat(self, food):
self.weight += food

def howl(self):
print("howl!", self.name)

def __repr__(self):
return f"name={self.name} weight={self.weight}"


d = Dog(10, "baduk")
d.eat(5)
d.howl()
print(d)


[네이밍 컨벤션]


class 이름은 CamelCase 로 정의한다.


class 내부 함수들은 snake_case 로 정의한다.



[더블언더스코어]


__는 더블언더 스코어 혹은 덴더, 던더라고 하는데


__init__, __repr__ 같이 더블언더스코어가 붙은 함수들은


미리 정해진 용도에 호출이 된다.


__init__ 는 생성자가 호출될때


__str__, __repr__ 은 인스턴스가 문자열 취급 받을 때


print(instance) 일때 호출된다.



[self]


클래스 내부 모든 함수들이 기본적인 매개변수로 가지고 있다.


이것은 클래스 함수를 호출하는 인스턴스 자기 자신을 뜻한다.


인스턴스의 대명사 정도로 인식하면된다.


self 는 매개변수로 들어가지만 실제로는 매개변수로 입력받지 않고


나머지 인자만 입력받는다.



[__init__]


클래스는 변수와 함수로 나누어 정의할 수 있다.


변수들을 미리 초기화자에 정의하는 것을 권장한다.


__init__ 는 초기화자 라고 한다. 


일부에서는 생성자라고 하지만 이것도 완전 틀린말은 아니다.


초기화자에서 클래스에서 사용할 모든 변수를 초기화 해주는데


초기화자외부에서 초기화 해주는건 권장되지 않는다.


초기화자에서 weight, name 을 매개변수로 입력받아서


weight 는 10, name 는 baduk 이라고 초기화 하였다.


d = Dog(10, "baduk")


이렇게 Dog 클래스의 d 인스턴스는 2개의 변수를 초기화 되었다.



[instance]


인스턴스는 클래스를 구현된 실체를 의미한다.


인스턴스에서는 자신의 변수나 함수를 접근할 수 있다.


d.eat(5)


d.weight = 10


인스턴스 내부 변수를 직접 접근할 수는 있으나


값을 바꾸는 것은 oop 관점에서 권장되는 방법이 아닐수도 있다.


댓글