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


틀 소개
파이썬에는 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