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 |
Tags
- rebase
- 패스트캠퍼스
- utterances
- 개발자
- Python
- 코딩
- 자바
- git
- 배달의 민족
- django
- 코딩테스트
- 깃허브
- 버전관리
- Programming
- 기술면접
- Spring Framework
- 기술블로그
- 프로그래밍
- Jackson
- 우아한 테크코스
- multi-thread
- 깃
- 프로그래머스
- VCS
- 우테코
- 스프링
- github
- 우아한 형제들
- 파이썬
- 우테코 프리코스
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