>  기사  >  백엔드 개발  >  Python의 정적 메서드 및 클래스 멤버

Python의 정적 메서드 및 클래스 멤버

高洛峰
高洛峰원래의
2017-03-01 11:56:381439검색

머리말

현재 Python 수준은 사용 가능한 단계이기 때문에 평소 Python을 사용하여 작성하는 스크립트는 상대적으로 간단하고 조금 더 큰 프로젝트를 작성한 적이 없습니다. Python의 클래스, 클래스 간의 조직적 관계, 전체 프로젝트에서 클래스가 결합되는 방식에 대한 이해가 여전히 부족합니다. 나는 공학 분야에서 Python의 응용을 배우고 기술 수준을 향상시키기 위해 다른 사람이 작성한 Python 코드를 읽을 계획입니다. 선택한 Python 코드는 Python 크롤러 코드, github 주소입니다. 이 코드는 제가 익숙하지 않은 코드 수준에 딱 들어맞기 때문에 현재 제가 배우기에 매우 적합한 코드입니다.

Python 2.4 이후 데코레이터는 주로 정적 메서드와 클래스 메서드를 구현하는 데 사용됩니다.

데코레이터는 @ 연산자를 사용합니다. 예는 다음과 같습니다.

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 매개 변수를 전달할 필요가 없으며 클래스 멤버 메서드는 self 매개 변수를 전달해야 합니다. 이 클래스를 나타내는 cls 매개변수

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

    사용된 차이점:

정적 메서드는 클래스 속성에 액세스할 수 없으므로 인스턴스 속성은 상대적으로 독립적인 메서드와 동일하며 클래스와 관련이 없습니다. 이런 방식으로 정적 메서드는 클래스 범위 내의 함수일 뿐입니다.


Python의 정적 메소드 및 클래스 멤버와 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

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