>백엔드 개발 >파이썬 튜토리얼 >Python 클래스 메서드와 인스턴스 메서드의 차이점

Python 클래스 메서드와 인스턴스 메서드의 차이점

(*-*)浩
(*-*)浩원래의
2019-06-29 09:27:066846검색

Python에서 더 일반적인 메서드 유형은 인스턴스 메서드와 클래스 메서드입니다. 그것들은 어떻게 정의됩니까? 어떻게 부르나요? 차이점과 기능은 무엇입니까? 아래를 참조하세요.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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