python metaclasses vs java reflection
371
작성한 질문수 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 메타클래스에 의해 제어됩니다.메타클래스를 사용하면 클래스의 속성, 메서드, 초기화 과정, 상속 등을 조작할 수 있습니다. 예를 들어 클래스 생성 시 클래스 이름을 변경하거나 메서드를 추가하거나 제거할 수 있습니다.
프록시 객체를 만들 때도 메타클래스를 사용할 수 있으며, 이를 통해 원래 클래스의 동작을 변경하거나 확장할 수 있습니다. 예를 들어, 런타임에 객체의 메서드 호출을 가로채고 추가 로직을 수행하거나, 특정 메서드를 오버라이드하여 수정된 동작을 제공할 수 있습니다.
[업데이트] 파이썬 패키지 부분에서 안되어서 강의 진행 불가
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





