파이썬 클래스란 무엇이고 왜 사용할까?
클래스, 네이버 어학 사전에 아래와 같이 설명되어 있다.
객체 지향 프로그래밍에서, 데이터와 그 조작 절차인 메소드를 정리한 객체의 추형을 정의한 것.
이를 통하여 동종의 객체를 정리하여 다룰 수 있게 된다.
좀 더 쉽게 알아보자
RPG 게임을 할 때 우리는 캐릭터를 생성한다.
이 캐릭터는 각각 하나뿐인 객체이다.
하지만, 이 캐릭터가 걷고 싸우고 스킬을 사용하는 것은(직업마다 다르겠지만)
내 캐릭터만 가능한 것이 아니라 공통된 동작이다.
위 클래스 정의를 다시 보면, 캐릭터(객체)의 데이터와 조작 절차를 정리한 추형이 바로 클래스이다.
아래는 클래스의 사용 예.
Class Character:
def __init__(self, name, job):
self.name = name
self.job = job
def move(self):
..
user1 = Character('으아아아', '전사')
user2 = Character('르르르으', '법사')
'이를 통하여 동종의 객체를 정리하여 다룰 수 있게 된다'
이 말을 위 예로 보면 Character라는 class를 이용해서 객체를 만들어 다룰 수 있게 된다.
그렇다면 클래스를 사용하는 이유는 뭘까?
객체지향 프로그래밍에서 결국 객체를 정의하고 다루는게 중요한데, 클래스가 이를 해주는 것처럼 보인다.
즉, 클래스는 동종의 객체를 찍어내는 틀이라고 볼 수 있다.
프로그램에서 책 관리가 필요하면 책이라는 class를 만들고 멤버변수와 멤버함수(method)를 정의해두고 객체를 만들면 된다. (책 제목과 같이 멤버변수들을 다르게 해서)
그럼 이제 실제 class를 정의하고 사용해보자.
class book:
def __init__(self, title, author, price):
self.title = title
self.author = author
self.price = price
def discount(self, state=0):
...
def print_info(self):
...
book_1 = book()
위 book클래스를 예로 class의 멤버변수, 멤버함수(method), self에 대해 알아보자
class 내에서 사용하는 변수를 멤버변수, 함수는 method(멤버함수) 라고 한다.
self는 class자기 자신을 뜻한다.
book 클래스의 print_info() 함수를 사용하려면 어떻게 할까?
book 객체인 book_1을 이용해서 호출할 수 있다.
book_1.print_info()
그렇다면 book class 내부에서 호출을 하려면 어떻게 할까?
self.print_info()
self를 이용해 호출할 수 있다.
아래는 Book class를 좀 더 구현한 내용이다.
class Book:
def __init__(self, title, author, price):
self.title = title
self.author = author
self.price = price
def discount(self, state=0):
if state == 1:
self.price = int(self.price * 0.9)
def print_info(self):
print("===== 책 정보 =====")
print("제목: " + self.title)
print("작가: " + self.author)
print("가격: %s" % (str(self.price)))
print()
book_1 = Book("파이썬", "홍길동", 25000)
book_1.print_info()
book_1.discount(1)
book_1.print_info()
결과화면
===== 책 정보 =====
제목: 파이썬
작가: 홍길동
가격: 25000
===== 책 정보 =====
제목: 파이썬
작가: 홍길동
가격: 22500
'개발 > 파이썬' 카테고리의 다른 글
파이썬 문자열 함수 - python split (0) | 2021.07.05 |
---|---|
파이썬 파일 입출력 - python File I/O (0) | 2021.07.04 |
파이썬 함수 - python def (0) | 2021.06.05 |
파이썬 조건문 - python if문 (1) | 2021.05.29 |
파이썬 반복문 - python while문 (0) | 2021.05.16 |