Python에서 더 일반적인 메서드 유형은 인스턴스 메서드와 클래스 메서드입니다. 그것들은 어떻게 정의됩니까? 어떻게 부르나요? 차이점과 기능은 무엇입니까? 아래를 참조하세요.
우선, 이 메소드들은 클래스에 정의되어 있습니다. 먼저 정의하고 호출하는 방법에 대해 간단히 설명하겠습니다. (PS: 인스턴스 객체는 가장 큰 권한을 갖습니다.)
인스턴스 방법 (권장 학습: Python 비디오 튜토리얼)
정의: 첫 번째 매개변수는 인스턴스 객체여야 하며 매개변수 이름은 일반적으로 " self", pass됨 인스턴스의 속성과 메서드를 전달합니다(클래스의 속성과 메서드도 전달할 수 있음).
Call: 인스턴스 개체에 의해서만 호출될 수 있습니다.
클래스 메소드
정의: @classmethod 데코레이터를 사용하세요. 첫 번째 매개변수는 현재 클래스 객체여야 합니다. 매개변수 이름은 일반적으로 클래스의 속성과 메서드가 전달되는 "cls"로 동의됩니다(인스턴스의 속성과 메서드는 전달할 수 없음). 인스턴스 객체와 클래스 객체를 모두 호출할 수 있습니다.
인스턴스 메서드간단히 말하면, 인스턴스 메서드는 클래스의 인스턴스에서 사용할 수 있는 메서드입니다. 여기에는 설명이 별로 없습니다.
클래스 메소드데코레이터 @classmethod를 사용하세요.
원칙적으로 클래스 메서드는 클래스 자체를 객체로 작동하는 메서드입니다. 메소드가 있고 클래스 자체를 객체로 사용하여 이 메소드를 호출하는 것이 논리적으로 더 합리적이라면 이 메소드를 클래스 메소드로 정의할 수 있습니다. 또한 상속이 필요한 경우에는 클래스 메소드로 정의할 수도 있습니다.
학생 수업과 수업 수업이 있다고 가정해 보겠습니다. 구현하려는 기능은 다음과 같습니다.
수업의 학생 수를 늘리는 작업을 수행하고 수업의 총 인원을 구합니다. 클래스는 클래스 클래스에서 상속되며 학생이 인스턴스화될 때마다 클래스 크기가 늘어날 수 있습니다.
마지막으로 일부 학생을 정의하고 클래스의 총 학생 수를 얻고 싶습니다.
class ClassTest(object): __num = 0 @classmethod def addNum(cls): cls.__num += 1 @classmethod def getNum(cls): return cls.__num # 这里我用到魔术方法__new__,主要是为了在创建实例的时候调用累加方法。 def __new__(self): ClassTest.addNum() return super(ClassTest, self).__new__(self) class Student(ClassTest): def __init__(self): self.name = '' a = Student() b = Student() print(ClassTest.getNum())
Python 관련 기술 기사를 더 보려면
Python Tutorial칼럼을 방문하여 알아보세요!
위 내용은 Python 클래스 메서드와 인스턴스 메서드의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!