머리말
현재 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 '__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 매개 변수를 전달할 필요가 없으며 클래스 멤버 메서드는 self 매개 변수를 전달해야 합니다. 이 클래스를 나타내는 cls 매개변수
사용된 차이점:
Python의 정적 메소드 및 클래스 멤버와 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!