인스턴스/클래스/정적 메서드
인스턴스 메서드
- 클래스 정의 내의 함수들은 기본적으로 인스턴스 메서드
- 생성된 객체를 통해 호출이 되며, 첫 번째 매개변수는 self이며 여기에 객체의 인스턴스가 전달
클래스 메서드
- 클래스 메서드는 클래스 자체를 객체로 보고 클래스에 대해 작동하는 메서드
- 인스턴스 메서드와 달리 첫 번째 매개변수의 이름을 관례적으로 cls라는 이름을 사용하며, 여기에 클래스가 전달
- @classmethod 데코레이터를 사용
- 클래스 메서드는 상속에서 의미가 있기 때문에 상속에 대한 강의 후 예제를 통해 설명
정적 메서드
- 클래스에 의해 정의되는 네임스페이스에 들어 있는 함수
- 정적 메서드는 객체 인스턴스에 의해 호출되지 않고, 클래스에 의해 호출되기 때문에 첫 번째 매개변수로 self가 없음
- @staticmethod 데코레이터를 사용
특수 메서드와 연산자 오버로딩
객체의 작동 방식
- 파이썬의 객체들은 구현 기능에 따라 분류
- 각 데이터 타입의 작동 방식은 해당 타입이 구현하고 있는 특수 메서드들의 집합에 따라 결정
- 특수 메서드들을 구현하여 객체의 작동방식을 변경할 수 있음
연산자 오버로딩
- 같은 이름(연산자)으로 다양한 타입의 객체가 연산이 되도록 구현하는 것
- 1+2, 3.14 + 5, 'abc' + 'def'
- 문자열, 리스트, 튜플 같은 순서열 타입 s는 s[n], len(s), v in s와 같은 연산이 가능
- 파이썬은 특수 메서드들을 오버로딩 하는 방식으로 연산자 오버로딩을 구현
- x+y는 x의 내부 메서드인 x.__add__(y)에 대응
- x[k]는 x.__getitem__(k)에 대응
객체 생성 및 파괴를 위한 특수 메서드
메서드 | 설명 |
__new__(cls [ , *args [ , **kwargs]]) | 새 인스턴스를 생성하기 위해 호출되는 클래스 메서드 |
__init__(self [ , *args [ ,**kwargs]]) | 새 인스턴스를 초기화하기 위해 호출 |
--del__(self) | 인스턴스가 파괴될 때 호출 |
객체의 문자열 표현
메서드 | 설명 |
__format__(self, format_spec) | 포멧이 적용된 표현을 생성 |
__repr__(self) | 객체의 문자열 표현을 생성 |
__str__(self) | 객체의 간단한 문자열 표현을 생성 |
다양한 특수 메소드는 다음 링크를 참고
위키독스
온라인 책을 제작 공유하는 플랫폼 서비스
wikidocs.net
위키독스
온라인 책을 제작 공유하는 플랫폼 서비스
wikidocs.net
private 네임 맹글링
파이썬에서는 완전하지 않지만 외부에서 사용자가 직접 접근할 수 없도록 속성이나 메서드 이름 앞에 두 개의 언더스코어(__)를 붙여 이름을 지을 수 있다.
- __<name> 형태의 속성이나 메서드는 객체를 사용하는 외부에서 객체의 해당 이름으로 직접 접근할 수 없어 이름을 사용자로부터 감추는 기능을 하게 됨
아래 정리 잘된 친절한 블로그에서 내용을 보충
https://tibetsandfox.tistory.com/21
파이썬(python) - 네임 맹글링(name mangling)
네임 맹글링(name mangling)이란? 네임 맹글링은 짓이기다(mangle)라는 어원에서 유추할 수 있듯이 파이썬이 변수/함수의 이름을 짓이겨서 다른 이름으로 바꿔버리는 것을 말합니다. 맹글링을 적용하
tibetsandfox.tistory.com
getter, setter, 프로퍼티
- 객체지향언어에서는 외부로부터 바로 접근할 수 없는 private 객체 속성을 지원하며, 프로그래머는 private 속성 값을 읽고 쓰기 위해 getter메서드나 setter메서드를 사용함
- 파이썬에서도 getter, setter메서드를 구현할 수 있지만, 프로퍼티를 더 사용한다.
- getter의 경우 @property 데코레이터 사용
- setter의 경우 @<property 데코레이터가 붙은 메서드명>.setter 데코레이터 사용
아래 정리글을 참고
https://dojang.io/mod/page/view.php?id=2476
파이썬 코딩 도장: 47.13 프로퍼티 사용하기
다음과 같이 클래스에서 메서드를 통하여 속성의 값을 가져오거나 저장하는 경우가 있습니다. 이때 값을 가져오는 메서드를 getter, 값을 저장하는 메서드를 setter라고 부릅니다. getter_setter.py class
dojang.io
'Language > Python' 카테고리의 다른 글
야구게임 - 파이썬 (0) | 2022.03.04 |
---|---|
[Python] Ch7 - part1. 클래스 (0) | 2021.07.01 |
[Python] Ch6 - part 3. 라이브러리 (0) | 2021.06.29 |
[Python] Ch6 - part 2. 패키지 (0) | 2021.04.24 |
[Python] Ch6 - part1. 모듈 (0) | 2021.04.24 |