일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 벤쿠버 렌트
- Linux
- QA엔지니어
- database연결
- FIDO 환불
- IntelliJ
- 엔테크서비스
- 외래키설정
- Lesson3
- 1463번
- FLEX5
- 벤쿠버집구하기
- Lesson2
- BC렌트
- 부산입국
- binaray_gap
- 파이도 환불
- 리눅스
- 레노보노트북
- Java
- 백준알고리즘
- 벤쿠버렌트
- FK 설정
- 프로그래머스
- 설탕문제
- 데이터의 무결성
- 캐나다워홀
- 자바
- codility
- 언마운트
- Today
- Total
대충이라도 하자
Python static method VS class method 본문
파이썬에서 메소드는 세 가지 종류이다.
- instance method
- class method
- static method
파이썬에서 사용되는
@classmethod 와 @staticmethod는 어떻게 다른 걸까???
-->
두 개가 서로 비슷하지만, 사용 방법이 조금 다르다.
클래스 메소드의 경우에는 클래스 객체가 첫번째 파라미터로 필요하지만, 스테틱 메소드의 경우에는 파라미터를 가지지 못한다.
*** stackoverflow 참고
class Date(object):
def __init__(self, day=0, month=0, year=0):
self.day = day
self.month = month
self.year = year
@classmethod
def from_string(cls, date_as_string):
day, month, year = map(int, date_as_string.split('-'))
date1 = cls(day, month, year)
return date1
@staticmethod
def is_date_valid(date_as_string):
day, month, year = map(int, date_as_string.split('-'))
return day <= 31 and month <= 12 and year <= 3999
date2 = Date.from_string('11-09-2012')
is_date = Date.is_date_valid('11-09-2012')
위처럼 클래스 메소드는 cls라는 파라미터로 클래스 내에서 정의된 변수들을 사용 가능하다.
하지만 스테틱 메소드는 클래스와는 관련 없이 클래스 내의 변수들을 사용하지 않고 새롭게 정의된다.
다른 클래스에서 이 클래스 메소드를 사용하기 위해서는 인스턴스를 선언한 뒤, 이 인스턴스로 사용할 수 있지만
스테틱 메소드는 인스턴스 선언 필요 없이, 그냥 바로 사용이 가능하다.
static method는 개체와 독립적이지만, 로직상 클래스 내에 포함되는 메소드이다.
또한,
""
This is a more subtle way of creating a Static method as we do not have to rely on a statement definition of a method being a class method and making it static at each place you make it static.
""
또한, 인스턴스 메소드에서는 self라는 파라미터를 사용하지만 클래스 메소드에서는 cls 라는 파라미터를 사용한다는 점도 기억해둘 것
static 메소드는 속성에 접근할 수 없기 때문에 사용하는 키워드가 없다.
속성에 접근하기 위한 방법이며, 메소드 종류에 따라 self냐 cls냐가 갈린다.