가장 자신 있는 프로그래밍 언어는 파이썬인데
안타깝게도 class 쓰는 것에 자신이 없었다......
그래도 오늘 여유가 나서 클래스, 매서드 등을 정리해보고 앞으로는 객체 지향 프로그래밍을 해보기로 마음 먹었다.
1. Class (클래스), Instance (인스턴스)
class라는 건 객체의 종류로, 'instance'라는 개념과 대조되어 사용된다.
예를 들어 나는 집을 정의해주고 싶다.
그래서 House라는 class를 만들어줄 수 있다.
이 클래스가 지칭하는 특정한 집은 없지만, House라는 개념을 만들어줬다고 생각하면 된다.
그리고 House 중에서도 철수와 영희네 집이 있을 수 있는데, 이런 특정한 집은 'instance(인스턴스)'라고 부른다.
2. Method (메서드)
이런 클래스 내에서 함수를 정의(def)하는 것을 'method(메서드)'라고 부른다.
예를 들어 집이 비어있는 것을 나타내는 함수와, 총 방의 개수를 세주는 함수를 만들면 아래와 같다.
class House:
def __init__(self):
self.isEmpty = False
self.room = []
def emptyHouse(self):
if self.isEmpty:
print("Nobody is home!")
def cntRoom(self):
room_num = len(self.room)
print("There are %d rooms." % (room_num) )
emptyHouse()와 cntRoom()은 메서드이다.
이전에 얘기한 철수와 영희네 집은 다음과 같이 만들 수 있다.
chulsoo_house = House()
younghee_house = House()
선언한 객체의 메서드를 호출하려면 아래와 같이 써준다.
chulsoo_house.emptyHouse()
__init__으로 초기화할 때 집이 비어있지 않다고 했으므로 프린트 되는 메시지는 없다.
3. __init__ (초기화 메서드)
위에 class를 선언해줄 때 "__init__"이라는 걸 정의해줬다.
이것은 각 객체의 초기값을 설정해주는 기능을 하는 특별한 메서드로, 객체를 선언할 때 자동으로 호출된다.
아래 예시를 참고하면 이해하기 편하다.
class House:
def __init__(self):
self.isEmpty = False
print("Hi! This is a new house.")
이것을 아래와 같이 실행해보면 다음과 같은 결과를 얻을 수 있다.
>> newHouse = House()
Hi! This is a new house.
>> print(newHouse.isEmpty)
False
'Python' 카테고리의 다른 글
[코딩테스트/Python] 내가 필요해서 정리하는 파이썬 내장함수, 연산기호, 리스트 선언 (0) | 2022.11.20 |
---|---|
[Python] copy(), deepcopy()의 차이 / 파이썬으로 list, array값 복사하기 (0) | 2021.09.16 |
[Python] map() 함수 / 여러 input 값의 자료형을 한 번에 바꾸는 방법 (0) | 2021.08.31 |
[Python] 비교 연산자와 논리 연산자의 Boolean 값 차이 (==, !=와 is, is not의 차이) (0) | 2021.08.31 |