초보 이해 @ classmethod 및 @ staticmethod
classicmethod 와 staticmethod 류 를 이해 하 는 것 은 데이터 구조 로 대상 을 만 들 수 있 습 니 다.클래스 를 호출 할 때 클래스 의 인 스 턴 스 대상 을 만 들 었 습 니 다.대상 이 생 성 되면 python 은 init () 방법 이 실현 되 었 는 지 확인 합 니 다.init () 가 구현 되 었 다 면, 인 스 턴 스 대상 은 첫 번 째 매개 변수 (self) 로 전 달 됩 니 다.
예 를 들 어 날짜 정 보 를 저장 하 는 클래스 Date 를 정의 합 니 다. 초기 화 함 수 를 다시 정의 합 니 다.
class Date(object):
day = 0
month = 0
year = 0
def __init__(self, day=0, month=0, year=0):
self.day = day
self.month = month
self.year = year
def tellDate(self):
print 'Today is %s-%s-%s'%(self.day,self.month,self.year)
如果我们需要调用tell Date方法,我们就必须先创建一个实例,或者使用Date().tellDate()date1 = Date() date1.tellDate()
어떻게 클래스 이름 호출 함 수 를 직접 사용 합 니까?
@ classmethod 나 @ staticmethod 를 사용 하면 클래스 이름 을 사용 할 수 있 습 니 다. 방법 명 () 호출 함수
현재 우리 가 Date 의 인 스 턴 스 를 많이 만들어 야 한다 고 가정 합 니 다. 날짜 정 보 는 문자열 로 외부 에서 들 어 옵 니 다. 형식 은 'dd - mm - yy' 입 니 다.필요 한 일
이렇게:
day, month, year = map(int, string_date.split('-'))
date1 = Date(day, month, year)
python 은 C + + 처럼 다시 불 러 올 수 없 기 때문에 class method 를 도입 합 니 다. ,self 인 자 는 필요 없 지만 첫 번 째 인 자 는 자신의 클래스 를 나타 내 는 cls 인 자 를 필요 로 합 니 다.
@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
모든 프로그램 및 실행 결과
class Date(object):
day = 0
month = 0
year = 0
def __init__(self, day=0, month=0, year=0):
self.day = day
self.month = month
self.year = year
def tellDate(self):
print 'Today is %s-%s-%s'%(self.day,self.month,self.year)
@classmethod
def from_string(cls, date_as_string):
day, month, year = map(int, date_as_string.split('-'))
date = cls(day, month, year)
return date
@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
if __name__ == '__main__':
date1 = Date()
date1.tellDate()
date2 = Date.from_string("14-04-2016")
date2.tellDate()
print Date.is_date_valid("14-04-2016")
:
Today is 0-0-0
Today is 14-4-2016
True
업데이트:
좋 은 자 료 를 발 견 했 습 니 다. staticmethod 와 classmethod.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
STL 학습노트(6) 함수 객체모방 함수는 모두pass-by-value이다 함수 대상은 값에 따라 전달되고 값에 따라 되돌아오기 때문에 함수 대상은 가능한 한 작아야 한다(대상 복사 비용이 크다) 함수 f와 대상 x, x 대상에서 f를 호출하면:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.