파이썬에서 메타 클래스 탐색 : 계급 창조의 힘을 발휘

파이썬에서 메타 클래스 탐색 : 계급 창조의 힘을 발휘

파이썬에서 메타 클래스 탐색 : 계급 창조의 힘을 발휘파이썬에서 메타 클래스 탐색 : 계급 창조의 힘을 발휘편집기에 의한 이미지

소개

파이썬에는 OP (Object-Oriented Programming)이라는 개념이 있습니다. 이 프로그래밍 패러다임은 데이터와 객체를 중심으로 진행됩니다. 클래스 내에서 관련 상태 (속성) 및 동작 (메소드)을 캡슐화하고 해당 클래스에서 객체 인스턴스를 작성하여 작동합니다.

많은 데이터 과학자들에게 Python은 그들이 배우는 최초의 프로그래밍 언어이며, 대부분의 데이터 작업의 기초가됩니다. 그러나 OOP는 때때로 즉각적인 문제를 해결하기 위해 절차 코드를 작성하는 데 중점을 두는 경우가 있습니다. 데이터 과학자의 경우 OOP는 복잡한 작업을 관리 가능한 구성 요소로 분류 할 수 있도록합니다. 코드를 클래스로 구성함으로써 데이터 과학자는 중복성을 줄이고 유지 관리 가능성을 향상시킬 수 있습니다.

파이썬 수업

클래스는 파이썬으로 만들기가 간단합니다. 기본 예는 다음과 같습니다.

class Animal:
    def __init__(self, name, sound):
        self.name = name
        self.sound = sound

    def speak(self):
        return f"{self.name} makes a sound {self.sound}."

클래스 구문을 사용하여 클래스 이름 ( “동물”)을 정의하고 매개 변수로 전달할 수있는 속성과 사용할 수있는 방법을 가진 동물의 개념을 캡처합니다.

위의 클래스를 사용하면 객체의 인스턴스를 만들 수 있습니다.

dog = Animal("Dog", "Bark")
print(dog.speak())

출력은 다음과 같습니다.

그만큼 Animal 클래스는 이전에 설정 한 두 가지 인수를 수락하며 객체는 다음을 사용할 수 있습니다. speak 우리가 그것을 인스턴스화 한 후에. 그것이 수업의 힘입니다. 한 번 정의하고 많은 상황에서 재사용하십시오.

메타 클라스는 무엇입니까?

메타 클라스는 클래스 자체가 어떻게 만들어 지는지를 제어하여 더 나아가고 있습니다. 수업이 객체의 청사진 인 것처럼 메타 클래스를 클래스의 청사진으로 생각할 수 있습니다. 객체가 클래스의 인스턴스 인 것처럼 클래스는 메타 클래스의 인스턴스입니다. 메타 클라스는 클래스의 행동 방식을 조절합니다.

클래스를 만들 때 Python은 클래스 본체를 실행 한 다음 결과를 메타 클래스로 전달합니다. 기본적으로 이것은 내장으로 처리됩니다 type 수업. 서브 클래싱으로 type우리는 우리 자신의 메타 클라스를 만들고 클래스 생성을 사용자 정의하기 위해 방법을 무시할 수 있습니다.

왜 우리는 메타 클라스를 원합니까? 데이터 과학자의 작업과 관련된 몇 가지 이유가 있습니다.

  • 생성 된 후속 클래스에 대한 표준 프레임 워크 제공
  • 모든 클래스가 필요한 방법을 정의하는지 확인합니다
  • 반복 된 보일러 플레이트 설정 코드를 피하십시오

메타 클래스의 파이썬 코드가 어떻게 작동하는지 살펴 보겠습니다.

파이썬의 메타 클라스

메타 클라스를 만들 때 정규 수업을 만드는 것처럼 보이지만 type아래와 같이.

class ExampleMetaclass(type):
    def __new__(mcs, name, bases, namespace):
        def greet(self):
            return f"Hello from {self.__class__.__name__}!"
        namespace['greet'] = greet
        return super().__new__(mcs, name, bases, namespace)

다음으로, 이전 예제와 유사한 클래스를 생성하지만 메타 클래스를 추가 매개 변수로 추가하십시오.

class Animal(metaclass=ExampleMetaclass):
    def __init__(self, name, sound):
        self.name = name
        self.sound = sound

    def speak(self):
        return f"{self.name} makes a sound {self.sound}."

동일하게 인스턴스화하십시오 Animal 이전과 같이 물체를 사용하지만 이제 메타 클라스가 제공 한 메소드를 사용하십시오.

dog = Animal("Dog", "Bark")
print(dog.greet())

출력은 다음과 유사합니다.

보시다시피 Animal 수업은 처음에는 부족합니다 greet 방법이지만 메타 클라스는 창조 중에 클래스에 주입합니다. 조금 더 분해합시다.

먼저, 메타 클라스를 만들려면 상속합니다 type Python의 내장에서 제공하는 클래스. type Python의 모든 클래스의 기본 메타 클래스이며 새로운 클래스가 만드는 방법을 제어 할 수 있습니다.

다음으로, __new__ 새로운 클래스가 만들어지면 메타 클래스의 메소드가 호출됩니다. 받는 매개 변수는 다음과 같습니다.

  • mcs: 메타 클라스 자체
  • name: 정의되는 클래스의 이름 (예 : “동물”)
  • bases: 기본 클래스의 튜플 (새로운 클래스가 상속받는 클래스)
  • namespace: 클래스 본문 내에 정의 된 모든 속성 및 방법을 포함하는 사전

이 네 가지 매개 변수를 사용하면 메타 클래스가 대상 클래스를 구성하는 방법을 제어 할 수 있습니다.

그런 다음 우리는 정의합니다 greet 클래스 네임 스페이스에 기능하고 주입하십시오. 이것을함으로써 greet 수업의 일부가되고 ExampleMetaclass 포함 할 것입니다.

마지막으로, 메타 클라스는 슈퍼 클래스를 호출하여 새로운 클래스를 만듭니다. __new__ 방법.

이것이 파이썬에서 메타 클라스의 본질이며, 클래스 생성을 표준화하고 제어하는 ​​데 필요한 모든 방법이나 규칙으로 확장 할 수 있습니다.

마무리

파이썬은 데이터 과학자들이 널리 사용합니다. 파이썬의 귀중한 주제 중 하나는 객체 지향 프로그래밍, 특히 중첩입니다. 메타 클래스를 사용함으로써 클래스 생성 프로세스를 제어하고 수정하여 코드베이스의 일관성을 유지하고 워크 플로 효율을 향상시킬 수 있습니다.

이것이 도움이 되었기를 바랍니다!

Cornellius Yudha Wijaya 데이터 과학 보조 관리자 및 데이터 작성자입니다. 그는 Allianz Indonesia에서 풀 타임으로 일하는 동안 소셜 미디어 및 작문 미디어를 통해 Python과 데이터 팁을 공유하는 것을 좋아합니다. Cornellius는 다양한 AI 및 기계 학습 주제에 대해 글을 씁니다.

출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다