파이썬은 객체 지향 프로그래밍 언어
이다.
객체 지향 프로그램이 언어
는 클래스
기반으로 객체
를 만들고, 객체
를 우선으로 생각하여 프로그래밍하는 것을 이념을 삼는다.
객체(object)
: 여러가지 속성을 가질 수 있는 모든 것
클래스(class)
: 객체를 조금 더 효율적으로 생성하기 위해 만들어진 구문
# 클래스 선언
class 클래스 이름:
클래스 내용
# 인스턴스
인스턴스 이름(변수 이름) = 클래스 이름()
인스턴스(instance)
: 클래스를 기반으로 만들어진 객체
Ex. 붕어빵틀 (클래스) - 실체화된 붕어빵(인스턴스)
클래스 이름과 같은 함수.
클래스 내부에__init__
라는 함수를 만들면 객체를 생성할 때 처리할 내용을 작성할 수 있다.
# 생성자
class 클래스 이름:
def __init__(self, 추가적인 매개변수):
pass
# 소멸자(destructor)
def __del__(self):
pass
self
: 자기 자신을 나타내는 딕셔너리. 클래스 내부의 함수는 첫 번째 매개변수로 self
를 입력해야 한다.
self.식별자
형태로 접근
클래스가 가지고 있는 함수
멤버 함수(member function), 인스턴스 함수(instance function)라고도 함
class 클래스 이름:
def 메소드 이름(self, 추가적인 매개변수):
pass
isinstance()
: 객체가 어떤 클래스로부터 만들어졌는지 확인
isinstance(인스턴스, 클래스)
하나의 리스트 내부에 여러 종류의 인스턴스가 들어가 있을 때, 인스턴스들을 구분하며 속성과 기능을 사용할 때 사용
__이름__()
형태의 메소드는 특수한 상황에 자동으로 호출되도록 만들어졌다.
__eq__
: equal, 같다
__ne__
: not equal, 다르다
__gt__
: greater than, 크다
__ge__
: greater than or equal, 크거나 같다
__lt__
: less than, 작다
__le__
: less than or equal, 작거나 같다
클래스가 속성(변수), 기능(함수)를 가질 수도 있다.
일반 변수와 큰 차이는 없으나 클래스가 가진 기능을 명시적으로 나타내어 변수로 만든다.
# 클래스 변수 생성
class 클래스 이름:
클래스 변수 = 값
# 클래스 변수에 접근하기
클래스 이름.변수 이름
일반 함수와 큰 차이는 없으나 클래스가 가진 기능을 명시적으로 나타내어 함수로 만든다.
# 클래스 함수 만들기
clss 클래스 이름:
@classmethod
def 클래스 함수(cls, 매개변수):
pass
# 클래스 함수 호출
클래스 이름.함수 이름(매개변수)
더 사용할 가능성이 없는 데이터를 메모리에서 제거하는 역할
가비지 컬렉터는 알아서 실행된다.
스왑(swap)
: 메모리가 부족해지면 컴퓨터는 하드디스크를 메모리처럼 사용해 무언가를 올리기 시작하는데 이 동작을 스왑이라고 함
클래스 내부의 변수를 외부에서 사용하는 것을 막고 싶을 때.
__변수이름
형태로 선언
프라이빗 변수의 값을 추출하거나 변경할 목적으로, 간접적으로 속성에 접근하도록 해주는 함수
기존에 만들어져 있는 기본 형태에 내가 원하는 것만 교체하는 것
다중 상속
: 다른 누군가가 만들어 놓은 형태들을 조립해서 내가 원하는 것을 만드는 것
부모(parent)
: 기반이 되는 것(기반 클래스)
자식(child)
: 부모 클래스를 기반으로 생성한 것
부모에 정의되어 있는 함수를 자식에서 다시 정의하는 것(재정의)
기존에 있던 함수, 변수 이외의 것을 완전히 새로 정의하는 것도 가능함
윤인성, 『혼자 공부하는 파이썬』, 한빛미디어