파이썬은 기본적으로 객체지향(Object-oriented) 언어이다. 파이썬의 가장 큰 특징 자체가 객체지향. 따라서 문법만 배운 것으로는 파이썬을 배웠다고 할 수 없다. 참고로 객체지향은 전공수업에서 6개월~1년 내내 배울정도로 양이 방대하다.
객체가 뭔가? 파이썬의 모든 것은 객체라고 할 수 있다.
절차지향: 순서대로, 순차대로 실행된다. EX)C언어
vs
객체지향: 절차지향의 단점(코드 재사용 등) ex)파이썬, C++
Class클래스 vs instance인스턴스
많이 예를 드는 것이 붕어빵과 붕어빵 틀이다. 하나하나 반죽을 하다가 힘들어서 나온 것이 붕어빵 틀이라고 생각하면 된다.
붕어빵은 우리가 원하는 "실체" 이다. 붕어빵틀은 붕어빵을 만들기 위한 도구이며, 실체가 아니다.
아래는 클래스 예시 코드이다. 클래스를 만들고자 하면 객체가 갖는 성질과 그 객체가 하는 행동을 정의하면 된다.
클래스 내부의 함수를 method메소드 라고 한다.(.append같은 여러분이 알고 있는 메소드는 list클래스에 누군가가 구현해놓은겁니다)
>>> class Singer: # 가수를 정의하자
... def sing(self): # 노래하기 메서드
... return "Lalala~"
...
>>> taeji = Singer() # 태지를 만들어랏!
>>> taeji.sing() # 노래 한 곡 부탁해요~
'Lalala~'
instance실체를 object객체라고 한다. 이 객체들의 공통점을 묶어 abstraction추상화, 일반화를 하면 그게 class다.
self는 그 클래스의 객체를 가리킨다.
class Amazon:
strength = 20
dexterity = 25
vitality = 20
energy = 15
def attack(self):
return 'Jab!!!'
def exercise(self):
self.strength += 2
self.dexterity += 3
self.vitality += 1
>>> jane = Amazon()
>>> mary = Amazon()
>>> jane.strength
20
>>> jane.attack()
'Jab!!!'
>>> eve = Amazon()
>>> eve.exercise()
>>> eve.strength
22
상속
객체지향 언어의 가장 큰 특징은 상속이다.
class Person:
# 눈 두 개, 코 하나, 입 하나...
eyes = 2
nose = 1
mouth = 1
ears = 2
arms = 2
legs = 2
# 먹고 자고 이야기하고...
def eat(self):
print('얌냠...')
def sleep(self):
print('쿨쿨...')
def talk(self):
print('주절주절...')
class Student(Person): # Person 클래스를 상속받음
def study(self):
print('열공열공...')
>>> lee = Person()
>>> lee.mouth
1
>>> lee.talk()
주절주절...
>>> kim = Student()
>>> kim.mouth
1
>>> kim.talk()
주절주절...
__init__메서드(초기화)
# bookstore.py
class Book:
def setData(self, title, price, author):
self.title = title
self.price = price
self.author = author
def printData(self):
print('제목 : ', self.title)
print('가격 : ', self.price)
print('저자 : ', self.author)
def __init__(self):
print('책 객체를 새로 만들었어요~')
객체가 처음 만들어지면 실행된다.
이외에도 __del__, __It__ 등 많다.
이외에도 객체속에 객체가 들어갈 수 있는데, 궁금한 사람은 찾아보도록 하자.
'파이썬 스터디' 카테고리의 다른 글
6. 그래프, 그래프 탐색 (0) | 2025.02.10 |
---|---|
5. Dynamic Porgramming 동적계획법 (0) | 2025.02.03 |
파이썬 중급 문법 (0) | 2024.11.13 |
파이썬 메소드 (0) | 2024.11.02 |
세트와 딕셔너리 (6) | 2024.09.08 |