이 글은 주로 Python의 정적 메소드와 클래스 멤버에 대한 관련 정보를 소개합니다. 이 글은 샘플 코드를 통해 둘 사이의 구문과 사용법의 차이점을 요약합니다. 아래에서 참고하세요.
서문
현재 Python 수준은 사용할 수 있는 단계이므로 일상 스크립트에서 사용하는 Python 작성 방법도 비교적 간단합니다. , 나는 조금 더 큰 프로젝트를 작성한 적이 없습니다. Python의 클래스, 클래스 간의 조직적 관계, 전체 프로젝트에서 클래스가 결합되는 방식에 대한 이해가 여전히 부족합니다. 나는 공학 분야에서 Python의 응용을 배우고 기술 수준을 향상시키기 위해 다른 사람이 작성한 Python 코드를 읽을 계획입니다. 선택한 Python 코드는 Python 크롤러 코드, github 주소입니다. 이 코드는 제가 익숙하지 않은 코드 수준에 딱 들어맞기 때문에 현재 제가 배우기에 매우 적합한 코드입니다.
Python 2.4 이후 데코레이터는 주로 정적 메서드와 클래스 메서드를 구현하는 데 사용됩니다.
데코레이터는 @operator를 사용하며, 예시는 다음과 같습니다:
class Example: val1 = "Value 1" def init(self): self.val2 = "Value 2" @staticmethod def staticmd(): print("静态方法,无法访问Value1和Value2") @classmethod def classmd(cls): print('类方法,类:'+str(cls)+",val1:"+cls.val1+",无法访问val2的值") example = Example() example.staticmd() #实例调用静态方法,无法访问实例变量val1和val2 example.classmd() #实例调用类方法,输出结果:类方法,类:<class 'main.Example'>,val1:Value 1,无法访问val2的值 Example.classmd() #类调用类方法,输出结果:类方法,类:<class 'main.Example'>,val1:Value 1,无法访问val2的值 example.val1 = "The instance value1 changed" example.classmd() #类调用类方法,输出结果:类方法,类:<class 'main.Example'>,val1:Value 1,无法访问val2的值 Example.val1 = "The class value2 changed" example.classmd() #类调用类方法,输出结果:类方法,类:<class 'main.Example'>,val1:The class value2 changed,无法访问val2的值 Example.classmd() #类调用类方法,输出结果:类方法,类:<class 'main.Example'>,val1:The class value2 changed,无法访问val2的值
위의 예를 보면 정적 메소드와 클래스 메소드의 차이점을 명확하게 구분할 수 있습니다.
첫 번째는 구문의 차이입니다.
정적 메소드는 self 매개변수인 class를 전달할 필요가 없습니다멤버 메소드이 클래스를 나타내는 cls 매개변수를 전달해야 합니다.
정적 메소드는 인스턴스 변수에 액세스할 수 있고 클래스 멤버 메소드는 인스턴스 변수에 액세스할 수 없지만 액세스할 수 있습니다. 클래스 변수
사용법의 차이:
정적 메소드는 클래스 속성 , 인스턴스 속성에 접근할 수 없기 때문에 상대적 독립 메서드와 동일하며 클래스와 아무 관련이 없습니다. 이런 식으로 정적 메서드는 클래스 범위 내의 함수일 뿐입니다.
[관련 추천]
위 내용은 정적 및 클래스 멤버의 예에 대한 자세한 설명(파이썬)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!