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
- sql
- TCP
- Docker
- 컴퓨터 네트워크
- 파이썬
- 데이터 파이프라인
- http
- 데이터 웨어하우스
- HADOOP
- Django
- 종류
- 데이터베이스
- 데브코스
- 자료구조
- 컴퓨터네트워크
- 가상환경
- TIL
- 정리
- airflow.cfg
- linux
- 데이터 엔지니어링
- 데이터엔지니어링
- PYTHON
- redshift
- airflow
- dockerfile
- Go
- S3
- AWS
- 운영체제
Archives
- Today
- Total
홍카나의 공부방
[Python] ClassMethod와 StaticMethod 본문
ClassMethod
- StaticMethod처럼 클래스의 인스턴스 없이 호출할 수 있다는 점은 동일하다.
- ClassMethod는 메소드 안에서 클래스 속성이나 메소드에 접근해야 할 때 사용한다.
- 클래스 메소드는 다음 코드처럼 메소드 위에 @classmethod를 붙인다. 그리고 첫 번째 매개변수에 cls를 지정해야 한다. ( 두번째 메소드 부터는 상관없다. )
- 앞에 @이 붙은 것을 데코레이터라고 하며, 메소드에 추가 기능을 구현할 때 사용한다.
- 위 매개변수에서 cls가 해당 class를 의미하는 것이다.
class User:
total = 0 # __init__에 만들어주지 않았으므로, 클래스 속성
def __init__(self):
User.total += 1 # 인스턴스가 만들어질 때 class 속성 total++
@classmethod
def print_total(cls):
print(f"{cls.total}명 생성되었음.") # cls로 클래스 속성 접근
user1 = User()
user2 = User()
User.print_total() # "2명 생성되었음."
StaticMethod
- ClassMethod처럼 역시나 인스턴스를 만들지 않아도 클래스를 통해 호출할 수 있다.
- 정적 메소드는 메소드 위에 @staticmethod를 붙여서 만든다. 정적 메소드의 매개변수에는 보통 self를 지정하지 않는다.
- 클래스에 대한 참조 없이 독립적인 메소드를 만들어야할 때, 정적 메소드를 사용하면 된다.
class MyClass:
count = 1
def __init__(self):
self.number = 1
@staticmethod
def my_method(a, b):
print(a+b)
@staticmethod
def my_method2(self): # 오류는 안나나, 옳지 않음!
print(self.number)
MyClass.my_method(10,20) # "30"
mc = MyClass() # 인스턴스 생성
print(mc.number) # 인스턴스 속성 프린트
mc.my_method2() # 오류!
반응형
'Programming Language > Python' 카테고리의 다른 글
.venv 파이썬 가상환경 활성화 (0) | 2023.11.16 |
---|---|
[Python] GIL(Global Interpreter Lock)이 뭘까? (0) | 2023.06.02 |
[Python] 파이썬에는 switch 문이 없다. (0) | 2023.05.20 |
[Python] if__name__=="__main__"은 왜쓰나요? (0) | 2023.05.19 |
[Python] list.append()와 list의 '+' operator 차이 (0) | 2023.04.16 |