Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Jackson
- 코딩
- github
- 버전관리
- git
- 프로그래밍
- utterances
- 깃허브
- 프로그래머스
- 기술면접
- 배달의 민족
- 파이썬
- django
- Programming
- 자바
- Python
- 패스트캠퍼스
- 우아한 테크코스
- 코딩테스트
- 깃
- 스프링
- 우테코 프리코스
- 기술블로그
- 개발자
- Spring Framework
- 우테코
- multi-thread
- 우아한 형제들
- VCS
- rebase
Archives
- Today
- Total
아둥바둥 개발일기
[Python] 인스턴스/클래스/스태틱 메소드 본문
파이썬 클래스 내부에 정의할 수 있는 메소드는 동적 메소드와 정적 메소드로 나뉩니다.
- 동적(dynamic): 인스턴스 메소드
- 정적(static): 클래스 메소드, 스태틱 메소드
우선 User라는 클래스와 User클래스의 인스턴스 user1이 있다고 가정하고 설명하겠습니다.
인스턴스 메소드
인스턴스 메소드는 항상 첫번째 인자로 인스턴스를 받습니다.
첫번째 인자는 관용적으로 self라는 키워드를 써서 인스턴스임을 명시해줘요.
class User:
def __init__(self, name, age):
self.name = name
self.age = age
def get_name(self):
return self.name
# 1. 인스턴스에서 바로 호출. 호출한 인스턴스가 첫번째 인자로 자동 전달.
# 추천
user1.get_name()
# 2. 클래스에서 호출 후 인스턴스를 첫번째 인자로 직접 전달.
# 비추천
User.get_name(user1)
인스턴스 메소드는 클래스에서 호출할 수도 있지만 인스턴스에서 호출하는 것이 좋습니다.
이것이 인스턴스 메소드임을 명시적으로 알릴 수 있어서 가독성이 좋아지기 때문이죠.
클래스 메소드
클래스 메소드는 항상 첫번째 인자로 클래스를 받습니다.
메소드를 정의할 때 @classmethod 데코레이터를 붙여야 합니다.
class User:
num = 10
@classmethod
def get_num(cls):
return cls.num
User.get_num()
user1.get_num()
클래스와 인스턴스 모두에서 호출할 수 있지만 인스턴스 메소드와 마찬가지로 클래스에서 호출하는 쪽이 더 가독성 좋은 코드입니다.
스태틱 메소드
스태틱 메소드는 인스턴스 변수, 클래스 변수를 전혀 다루지 않는 메소드입니다.
클래스 메소드와 비슷하게 @staticmethod 데코레이터를 붙여야 합니다.
스태틱 메소드는 인스턴스/클래스 메소드와 다르게 어떤 값도 첫번째 인자로 자동 전달되지 않습니다.
Comments