python metaclasses vs java reflection
374
작성한 질문수 4
강의를 듣던도중, python metaclasses가, 자바의 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 메타클래스에 의해 제어됩니다.메타클래스를 사용하면 클래스의 속성, 메서드, 초기화 과정, 상속 등을 조작할 수 있습니다. 예를 들어 클래스 생성 시 클래스 이름을 변경하거나 메서드를 추가하거나 제거할 수 있습니다.
프록시 객체를 만들 때도 메타클래스를 사용할 수 있으며, 이를 통해 원래 클래스의 동작을 변경하거나 확장할 수 있습니다. 예를 들어, 런타임에 객체의 메서드 호출을 가로채고 추가 로직을 수행하거나, 특정 메서드를 오버라이드하여 수정된 동작을 제공할 수 있습니다.
Replit 강의 자료가 안나와요
0
16
1
Replit UI 변경으로 인한 실습 진행 문의
1
25
1
replit에서 developer frameworks가 안보여요
0
88
2
[업데이트] 파이썬 패키지 부분에서 안되어서 강의 진행 불가
2
112
3
html 읽기 오류
1
111
2
DataFrame groupby 사용관련 질문
1
120
2
pylint shell 사용법
0
85
2
자막오류 수정가능한가요?
0
94
1
복합 조건절 관련 궁금증
0
88
2
49.행맨 프로그램 - 재시도 횟수 관련.
1
87
1
64. 파이썬 입문자가 쉽게 빠지기 쉬운 몇가지 에러(혹은 로직)에 대해 알아보기
0
118
2
Replit UI가 업데이트 되서 강의 진행이 멈췄어요
2
201
3
Replit을 사용해보려고 하는데 영상처럼 진행이 안되네요
3
491
2
실무에서의 제네레이터 함수 사용에 관한 질문입니다.
0
74
2
영상이 소리만 나오고 영상은 안보입니다.
0
99
2
pandas 오류 질문
0
146
2
상속 질문
1
138
2
total을 float으로 바꾸신 이유
0
208
2
섹션2 ["환경 vs. 설정 vs. 구성"] 강의 자막 문의
0
148
1
파이썬 data insert to table
0
243
2
파이썬 Class Method 질문
0
168
2
timeit 쓸 때는 만들었던 함수를 재사용 할 수는 없는지?
0
138
2
__repr__ 와 __str__ 차이점?
0
211
2
class method vs static method
0
293
2





