[TIL] Python. Class

여주링·2020년 11월 26일
0

Python

목록 보기
11/15

Class~
너무나 x 100어려운 개념이라 3일정도 개고생하며 몸으로 배웠다..ㅠㅠ
기승전붕어빵

Class

Class란?

c를 제외한 언어는 기본 객체지향 프로그래밍 언어이다. class라는 것을 기반으로 객체(object)를 만들고, 그 객체를 우선으로 생각해 프로그래밍 한다는 개념이다.
클래스는 자료형을 위한 일종의 템플릿이라고 생각하면 된다. 클래스 안에는 다양한 유형의 정보가 담겨 있고, 우리가 자료형과 어떻게 상호작용할 것인지 적혀 있다.
클래스는 다음과 같은 구문으로 형성한다.

Class 클래스 이름:
	클래스 내용

(참고로 클래스 이름은 각 단어의 앞글자를 대문자로 만들고 이를 합쳐서 이름을 만드는 캐멀케이스규칙을 지켜 클래스이름을 짓는다고한다)

그런데, 그냥 함수를 쓰면 되는거지 왜 굳이 클래스를 사용할까?
클래스를 사용하면 코드의 구조를 더 효과적으로 구현할 수 있기 때문이다. 지금이야 간단한 예시를 사용하고 있지만 복잡해질경우 class는 적재적소에 사용된다

인스턴스 생성하기 (Instantiation)

Instantiation
인스턴스란 클래스에 의해 만들어진 객체를 칭하는 말이다.
붕어빵 틀 = 클래스
붕어빵 = 인스턴스 라고 생각하면 될듯

test_instance = TestClass()

클래스 이름에 괄호를 추가하여 인스턴스를 만들고, 그걸 변수 test_instance에 할당하는 방식이다.
물론 수많은 인스턴스를 호출하는 것도 가능하다. 어차피 클래스는 붕어빵틀이고, 이걸 각기 다른 붕어빵으로 만들어낼수 있으니까..(붕어빵타령)

test_instance1 = TestClass()
test_instance2 = TestClass()
test_instance3 = TestClass()

인스턴스라는 개념과 객체라는 개념이 많이 헷갈렸는데, 그냥 인스턴스=객체라고 이해하고 실무에서 몸으로 부딪히며 이해하는게 좋을듯

클래스 변수 (Class Variables)

클래스를 정의할 때 그 안에서 변수를 정의하면 모든 인스턴스에서 동일한 데이터를 사용할 수 있다. 이를 클래스 변수라고 부른다

예를 들어 Coffee이라는 클래스 안에 name이라는 변수를 정의하면

class Coffee:
name = "Latte"

guest1 = Coffee()
barista= Coffee()

print(guest1.name)
print(barista.name)

그러면 각각 다른 인스턴스를 호출하더라도 각 인스턴스 안에 있는 name이라는 변수는 언제나 똑같다.
모두 Name라는 값이 출력될 거다.

매서드 (Methods)

메서드는 클래스 안에서 정의된 함수로 메소드를 만들때는 아래와 같이 작성한다.

Class 클래스이름:
	def 메소드이름(self, 추가적인 매개변수):

메서드를 정의할 때는 첫 번째 인수를 항상 self로 지정해야 한다는 것 꼭 알아두자!

class Car:
	def __init__(self, maker, model, horse_power): 
		self.maker = maker
		self.model = model 
		self.horse_power = horse_power

Init메서드

init 메소드는 class가 실체화 될때 사용되는 함수로 필수적으로 오는 매서드이다. Init메서드는 클래스가 실체화 될때 자동으로 호출이 됩니다.
init 메소드의 self 파라미터는 항상 정의되어야 있어야 하며 맨 처음 파라미터로 정의 되어야 한다 (그래야 파이썬이 알아서 넘겨줄 수 있으므로)

self

셀프가 개인적으로 이해가 가장 안됬던 개념중에 하나이다.
붕어빵을 예로 들면, 붕어빵틀인 클래스에 재료에 따라 다른 붕어빵을 만든다고 생각해보자.

class 붕어빵:
	def __inif__(재료,굽는법,가격):
    재료 = 반죽, 기타등등
    굽는법 = 6분 앞뒤로 굽기
    가격 = 얼마

pizza.붕어빵()
cream.붕어빵()

그런데 피자붕어빵과 슈크림붕어빵을 동시에 만들경우 class는 속성이 어느쪽인지 헷갈리는 상황이 벌어진다. 그래서 피자붕어빵의 재료,굽는법,가격은 반드시 피자붕어빵 본인에게 가야한다는 하나의 지표로써 self를 붙여준다!라고 이해했다.

class 붕어빵:
	def __inif__(self.재료,굽는법,가격):
    self.재료 = 반죽, 기타등등
    self.굽는법 = 6분 앞뒤로 굽기
    self.가격 = 얼마

pizza.붕어빵()
cream.붕어빵()

이해한뒤 블로그를 정리하니 너무너무 쉽게 적히지만, 이 기본중의 기본개념만 이해하는데도 3일이 걸린것 같다..ㅠㅠ 화이팅 코린이..

profile
🌱Backend Developer👩‍💻

0개의 댓글