>백엔드 개발 >파이썬 튜토리얼 >정적 및 클래스 멤버의 예에 대한 자세한 설명(파이썬)

정적 및 클래스 멤버의 예에 대한 자세한 설명(파이썬)

Y2J
Y2J원래의
2017-05-06 14:30:061506검색

이 글은 주로 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 &#39;main.Example&#39;>,val1:Value 1,无法访问val2的值
Example.classmd() #类调用类方法,输出结果:类方法,类:<class &#39;main.Example&#39;>,val1:Value 1,无法访问val2的值
example.val1 = "The instance value1 changed"
example.classmd() #类调用类方法,输出结果:类方法,类:<class &#39;main.Example&#39;>,val1:Value 1,无法访问val2的值
Example.val1 = "The class value2 changed"
example.classmd() #类调用类方法,输出结果:类方法,类:<class &#39;main.Example&#39;>,val1:The class value2 changed,无法访问val2的值
Example.classmd() #类调用类方法,输出结果:类方法,类:<class &#39;main.Example&#39;>,val1:The class value2 changed,无法访问val2的值

위의 예를 보면 정적 메소드와 클래스 메소드의 차이점을 명확하게 구분할 수 있습니다.

첫 번째는 구문의 차이입니다.

  • 정적 메소드는 self 매개변수인 class를 전달할 필요가 없습니다멤버 메소드이 클래스를 나타내는 cls 매개변수를 전달해야 합니다.

  • 정적 메소드는 인스턴스 변수에 액세스할 수 있고 클래스 멤버 메소드는 인스턴스 변수에 액세스할 수 없지만 액세스할 수 있습니다. 클래스 변수

사용법의 차이:

정적 메소드는 클래스 속성 , 인스턴스 속성에 접근할 수 없기 때문에 상대적 독립 메서드와 동일하며 클래스와 아무 관련이 없습니다. 이런 식으로 정적 메서드는 클래스 범위 내의 함수일 뿐입니다.

[관련 추천]

1. Python 무료 동영상 튜토리얼

2. Python 학습 매뉴얼

3. Python 객체지향 동영상 튜토리얼

위 내용은 정적 및 클래스 멤버의 예에 대한 자세한 설명(파이썬)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.