Python의 인스턴스 vs. 정적 vs. 클래스 메서드: 중요한 차이점

Python의 인스턴스 vs. 정적 vs. 클래스 메서드: 중요한 차이점

Python 메서드는 객체 지향 프로그래밍(OOP)에 빠지면 종종 혼동될 수 있습니다. 이 가이드에서는 Python의 세 가지 주요 메서드 유형을 다룹니다.





파이썬의 3가지 유형의 메소드

Python에는 세 가지 유형의 메서드가 있습니다. 인스턴스 메서드 , 정적 메서드 , 그리고 클래스 메서드 .





차이점을 아는 것이 기본 Python 스크립트를 코딩하는 데 항상 필요한 것은 아니지만 OOP로 진행하면 차이점이 큰 변화를 만들 수 있습니다.





Python을 처음 사용하거나 아무 것도 설치하지 않고 실험하고 싶다면 다음을 방문하십시오. 온라인 대화형 Python 셸 .

시작하기 전에: 데코레이터 패턴 이해하기

차이점을 살펴보기 전에 다음으로 알려진 디자인 패턴을 이해하는 것이 중요합니다. 데코레이터 패턴 , 또는 단순히 데코레이터 .



데코레이터는 복잡해 보이지만 두려워할 것은 없습니다. 데코레이터는 단순히 함수입니다. 직접 작성하거나 라이브러리 또는 Python 표준 라이브러리에 포함된 것을 사용할 수 있습니다.

다른 기능과 마찬가지로 데코레이터는 작업을 수행합니다. 여기서 차이점은 데코레이터가 논리를 적용하거나 다른 기능의 동작을 변경한다는 것입니다. 코드를 재사용하는 훌륭한 방법이며 논리를 개별 문제로 분리하는 데 도움이 될 수 있습니다.





데코레이터 패턴은 정적 또는 클래스 메서드를 정의하는 Python에서 선호하는 방법입니다. 다음은 Python에서 보이는 것입니다.

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
@staticmethod
def example_function():
''' This method is decorated! '''
print('I'm a decorated function!')

de = DecoratorExample()
de.example_function()

데코레이터는 함수나 클래스 선언 바로 앞에 와야 합니다. 그들은 시작 @ 부호가 있으며 일반적인 방법과 달리 인수를 전달하지 않는 한 끝에 괄호를 넣을 필요가 없습니다.





여러 데코레이터를 결합하고, 직접 작성하고, 클래스에도 적용할 수 있지만 이 예제에서는 그렇게 할 필요가 없습니다.

sim 프로비저닝되지 않음 mm 2 수정

Python의 인스턴스 메서드

인스턴스 메소드는 Python 클래스에서 가장 일반적인 유형의 메소드입니다. 인스턴스의 고유한 데이터에 액세스할 수 있기 때문에 그렇게 불립니다. car 클래스에서 각각 생성된 두 개의 객체가 있는 경우 각각 다른 속성을 가질 수 있습니다. 색상, 엔진 크기, 좌석 등이 다를 수 있습니다.

인스턴스 메서드에는 다음이 있어야 합니다. 본인 매개변수로 사용할 수 있지만 매번 전달할 필요는 없습니다. Self는 또 다른 Python 특수 용어입니다. 모든 인스턴스 메서드 내에서 self를 사용하여 클래스에 있을 수 있는 모든 데이터 또는 메서드에 액세스할 수 있습니다. 당신은 스스로를 통하지 않고 그것들에 접근할 수 없을 것입니다.

마지막으로 인스턴스 메서드가 가장 일반적이므로 데코레이터가 필요하지 않습니다. Python에 달리 지정하지 않는 한 생성한 모든 메서드는 자동으로 인스턴스 메서드로 생성됩니다.

다음은 예입니다.

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
self.name = 'Decorator_Example'
def example_function(self):
''' This method is an instance method! '''
print('I'm an instance method!')
print('My name is ' + self.name)

de = DecoratorExample()
de.example_function()

NS 이름 변수는 다음을 통해 액세스됩니다. 본인 . 주의할 때 example_function 가 호출되면 자체를 전달할 필요가 없습니다. ---Python이 이 작업을 수행합니다.

Python의 정적 메서드

정적 메서드는 어떤 식으로든 클래스와 관련이 있지만 클래스별 데이터에 액세스할 필요가 없는 메서드입니다. 사용할 필요가 없습니다 본인 , 인스턴스를 인스턴스화할 필요도 없습니다. 간단히 메서드를 호출하면 됩니다.

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
@staticmethod
def example_function():
''' This method is a static method! '''
print('I'm a static method!')

de = DecoratorExample.example_function()

NS @정적 메서드 데코레이터는 이 메서드가 정적 메서드임을 Python에 알리는 데 사용되었습니다.

정적 메서드는 독립적으로 작업을 수행하는 유틸리티 함수에 적합합니다. 클래스 데이터에 액세스할 필요가 없고 액세스할 수 없습니다. 완전히 독립적이어야 하며 인수로 전달된 데이터로만 작동합니다. 정적 방법을 사용하여 두 개의 숫자를 더하거나 주어진 문자열을 인쇄할 수 있습니다.

파이썬의 클래스 메서드

클래스 메소드는 알아야 할 세 번째이자 마지막 OOP 메소드 유형입니다. 클래스 메서드는 클래스에 대해 알고 있습니다. 특정 인스턴스 데이터에 액세스할 수 없지만 다른 정적 메서드를 호출할 수 있습니다.

클래스 메서드는 필요하지 않습니다. 본인 인수로 사용되지만 매개변수가 필요합니다. 클스 . 이것은 수업 , 그리고 self와 마찬가지로 Python에 의해 자동으로 전달됩니다.

클래스 메소드는 다음을 사용하여 생성됩니다. @classmethod 데코레이터.

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
@classmethod
def example_function(cls):
''' This method is a class method! '''
print('I'm a class method!')
cls.some_other_function()
@staticmethod
def some_other_function():
print('Hello!')

de = DecoratorExample()
de.example_function()

클래스 메소드는 아마도 세 가지 메소드 유형 중 더 혼란스러울 수 있지만 용도가 있습니다. 클래스 메서드는 클래스 자체를 조작할 수 있으므로 더 크고 복잡한 프로젝트에서 작업할 때 유용합니다.

각 방법 유형을 사용하는 경우

Python에서 메서드 유형을 선택하는 것은 어렵고 벅찬 결정처럼 보일 수 있지만 약간의 연습을 통해 곧 익숙해질 것입니다.

디스크에 공간이 충분하지 않습니다

재미를 위해 작은 스크립트만 작성하더라도 Python의 또 다른 OOP 기능을 배우는 것은 훌륭한 기술이며, 코드를 문제를 더 쉽게 해결하고 나중에 재사용하기 쉽게 만드는 데 도움이 될 수 있습니다.

요약해서 말하자면:

  1. 인스턴스 메소드: 가장 일반적인 방법 유형입니다. 각 인스턴스에 고유한 데이터 및 속성에 액세스할 수 있습니다.
  2. 정적 메서드: 클래스의 다른 항목에 액세스할 수 없습니다. 완전히 독립적인 코드.
  3. 수업 방법: 클래스의 제한된 메서드에 액세스할 수 있습니다. 클래스별 세부 정보를 수정할 수 있습니다.

이 튜토리얼이 약간 고급스럽거나 원하는 것이 아니었다면 이 과정을 살펴보고 Python 초심자에서 전문가로 이동하는 것은 어떻습니까? 이 5개의 웹사이트는 파이썬 초보자에게도 좋습니다. Python을 실제 세계에서 사용하고 싶지만 Raspberry Pi가 지겹다면 파이썬으로 아두이노 제어하기 ?

공유하다 공유하다 트위터 이메일 명령 프롬프트를 사용하여 Windows PC를 청소하는 방법

Windows PC의 저장 공간이 부족한 경우 이 빠른 명령 프롬프트 유틸리티를 사용하여 정크를 정리하십시오.

다음 읽기
관련 항목
  • 프로그램 작성
  • 프로그램 작성
  • 파이썬
저자 소개 조 코번(136건의 출판물)

Joe는 영국 링컨 대학교에서 컴퓨터 공학을 전공했습니다. 그는 전문 소프트웨어 개발자이며 드론을 날리거나 작곡을 하지 않을 때 종종 사진을 찍거나 동영상을 제작하는 모습을 볼 수 있습니다.

조 코번이 참여한 작품 더보기

뉴스레터 구독

기술 팁, 리뷰, 무료 전자책 및 독점 거래에 대한 뉴스레터에 가입하십시오!

구독하려면 여기를 클릭하세요.