inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실리콘밸리 엔지니어가 가르치는 파이썬 기초부터 고급까지

클래스로 클래스를 만드는 메타클래스(Metaclasses)에 대해서 알아보기

python metaclasses vs java reflection

371

aorri96

작성한 질문수 4

0

강의를 듣던도중, python metaclasses가, 자바의 reflection과 비슷하다는 느낌을 받았습니다.

질문 :

python 알고리즘 reflection

답변 1

0

미쿡엔지니어

안녕하세요 Aorri96님

 

파이썬에서 메타클래스를 사용하면 클래스의 생성 및 동작을 커스터마이즈할 수 있으므로 런타임에 동적으로 클래스의 정보를 조작하거나 프록시 객체를 만드는 등의 작업이 가능합니다. 메타클래스는 클래스의 "클래스"이며, 새로운 클래스를 만들 때 클래스 자체의 동작을 수정할 수 있게 해줍니다.

메타클래스를 정의하려면 다음과 같이 type을 사용하여 클래스를 만듭니다. type은 클래스의 메타클래스이기도 합니다.

class MyMeta(type):
    def __init__(cls, name, bases, attrs):
        # 클래스가 생성될 때 호출됩니다.
        # 여기에서 클래스의 정보를 조작할 수 있습니다.
        super().__init__(name, bases, attrs)

class MyClass(metaclass=MyMeta):
    def __init__(self, value):
        self.value = value

# MyClass 클래스는 MyMeta 메타클래스에 의해 제어됩니다.

메타클래스를 사용하면 클래스의 속성, 메서드, 초기화 과정, 상속 등을 조작할 수 있습니다. 예를 들어 클래스 생성 시 클래스 이름을 변경하거나 메서드를 추가하거나 제거할 수 있습니다.

프록시 객체를 만들 때도 메타클래스를 사용할 수 있으며, 이를 통해 원래 클래스의 동작을 변경하거나 확장할 수 있습니다. 예를 들어, 런타임에 객체의 메서드 호출을 가로채고 추가 로직을 수행하거나, 특정 메서드를 오버라이드하여 수정된 동작을 제공할 수 있습니다.

[업데이트] 파이썬 패키지 부분에서 안되어서 강의 진행 불가

2

67

3

html 읽기 오류

1

93

2

DataFrame groupby 사용관련 질문

1

94

2

pylint shell 사용법

0

71

2

자막오류 수정가능한가요?

0

79

1

복합 조건절 관련 궁금증

0

79

2

49.행맨 프로그램 - 재시도 횟수 관련.

1

76

1

64. 파이썬 입문자가 쉽게 빠지기 쉬운 몇가지 에러(혹은 로직)에 대해 알아보기

0

103

2

Replit UI가 업데이트 되서 강의 진행이 멈췄어요

2

180

3

Replit을 사용해보려고 하는데 영상처럼 진행이 안되네요

3

422

2

실무에서의 제네레이터 함수 사용에 관한 질문입니다.

0

64

2

영상이 소리만 나오고 영상은 안보입니다.

0

87

2

pandas 오류 질문

0

125

2

상속 질문

1

132

2

total을 float으로 바꾸신 이유

0

201

2

섹션2 ["환경 vs. 설정 vs. 구성"] 강의 자막 문의

0

142

1

파이썬 data insert to table

0

222

2

파이썬 Class Method 질문

0

155

2

timeit 쓸 때는 만들었던 함수를 재사용 할 수는 없는지?

0

131

2

__repr__ 와 __str__ 차이점?

0

206

2

class method vs static method

0

274

2

Type hint 문법의 Type Checking이 강제성이 있는지?

0

164

2

클래스 접근자 강의 복습부분 0:47에 오타가 있네요

0

104

2

수업 때 쓰셨던 txt file 공유 해주시면 좋겠습니다

1

177

1