Python
[개미의 걸음 Python 29차시] 객체와 클래스 with 식별자, 소멸자, 메소드
IT개미 데이터
2020. 7. 29. 23:23
728x90
객체[Object]
여러가지 속성을 가질 수 있는 모든 것
- 프로그램에서 필요한 요소만을 사용해 객체를 표현하는 것을 추상화[Abstraction]이라고 함
- 포괄적인 의미로 추상화는 복잡한 자료, 모듈 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것
- 객체와 관련된 코드를 분리할 수 있게 하는 것이 객체 지향 프로그래밍의 핵심!
- 객체를 조금 더 효율적으로 생성하기 위해 만들어진 구문이 클래스!
클래스[class]
class 클래스 이름:
클래스 내용
객체를 쉽고 편리하게 생성하기 위해 만들어진 구문
- 클래스 이름은 캐멀 케이스[각 단어의 앞 글자를 대문자로 표기] 방식으로 작성하는 것이 좋음
- 클래스 이름과 같은 함수(생성자)를 사용해 객체를 생성
- 이처럼 클래스를 기반으로 만들어진 객체를 인스턴스[Instance]라고 함
- 속성[변수]과 기능[함수]를 가질 수 있음
클래스 변수
class 클래스 이름:
클래스 변수 = 값
- class 구문 바로 아래의 단계에서 변수를 선언하기만 하면 클래스 변수가 생성
- 단순히 class 내에 있는 변수이므로 사용 방법은 일반 변수와 동일!
- class 변수에 접근하기 위해서는 "클래스 이름.변수 이름"을 사용
# 인스턴스 변수와 클래스 변수
더보기
인스턴스 변수 | 인스턴트를 생성해야 비로소 사용 가능한 변수 |
클래스 변수 | 클래스 내의 공간이 할당된 변수 인스턴트에는 별도의 공간이 할당되지 않음[여러 인스턴스가 클래스 변수의 공간을 같이 사용] |
클래스 함수
class 클래스 이름:
@classmethod
def 클래스 함수(cls, 매개변수):
pass
- class 구문 내에서 함수를 선언만 하면 클래스 함수가 생성
- class 함수의 첫 번째 매개변수에는 클래스 자체가 들어옴[cls]
- class 함수를 호출하기 위해서는 "클래스 이름. 함수 이름(매개변수)"를 사용
- 클래스 함수를 생성하기 위해 데코레이터를 사용
# 데코레이터[Decorator]
더보기
@로 시작하는 것을 데코레이터라고 함
만드는 방법에 따라 함수 데코레이터와 클래스 데코레이터로 나뉘지만 기능은 동일
클래스 상속[Inheritance]
기존의 클래스가 가지고 있는 필드와 메소드를 그대로 물려받는 새로운 클래스를 만드는 것
공통되는 부분들을 둔 클래스를 중심으로 상속을 받으면 일관되고 효율적으로 프로그램을 짤 수 있음
생성자[Constructor]
class 클래스 이름:
def __init__(self, 추가적인 매개변수):
pass
클래스 이름과 같은 함수
- 생성자는 __init__ 라는 이름을 가짐
- 클래스 내부의 함수는 첫 번째 매개변수로 반드시 self를 입력한다.
→ self는 자기 자신을 나타내는 딕셔너리
→ self는 키워드가 아닌 단순한 식별자
소멸자[Destructor]
생성자와 반대로 인스턴스가 소멸될 때 호출되는 함수
- 클래스 내부에서 __del__(self) 형태로 함수를 선언해서 만듦
메소드[Method]
class 클래스 이름:
def 메소드 이름(self, 추가적인 매개변수):
pass
클래스가 가지고 있는 함수
- 생성자를 선언하는 방법과 유사하지만 첫 번째 매개변수로 self를 넣어줘야 한다!
- 메소드 안에서 필드에 접근할 일이 없다면 self를 생략할 수 있음
- 클래스를 기반으로 객체를 만들고 객체 뒤에 .(마침표)를 입력하면 자동완성기능[비주얼 스튜디오 코드]가 나타남
→ 직접 만들지 않은 특이한 이름을 가진 함수들이 많이 있음
→ 파이썬 클래스를 사용할 때 제공해주는 보조 기능들
→ __<이름>__() 형태를 지닌 함수들로 특수한 상황에서 자동으로 호출됨
# 특이한 이름의 메소드
더보기
이 름 | 영 어 | 설 명 |
eq | equal | 같다 |
ne | not equal | 다르다 |
gt | greater than | 크다 |
ge | greater than or equal | 크거나 같다 |
It | less than | 작다 |
le | less than or equal | 작거나 같다. |
728x90