Python에서 익명 클래스 및 개체 탐색
Python의 내장 type() 함수는 객체가 속한 클래스를 반환합니다. Python에서는 내장 클래스나 사용자 정의 클래스 모두 클래스 유형의 객체입니다.
예
class myclass:
def __init__(self):
self.myvar=10
return
obj = myclass()
print ('class of int', type(int))
print ('class of list', type(list))
print ('class of dict', type(dict))
print ('class of myclass', type(myclass))
print ('class of obj', type(obj))
다음과 같은 출력이 생성됩니다 -
class of int <class 'type'>
class of list <class 'type'>
class of dict <class 'type'>
class of myclass <class 'type'>
type()에는 다음과 같이 세 개의 인수 버전이 있습니다. −
구문
newclass=type(name, bases, dict)
위 구문을 사용하면 클래스를 동적으로 생성할 수 있습니다. 함수 유형의 세 가지 인수는 −
입니다.
-
name - 새 클래스의 __name__ 속성이 되는 클래스 이름
-
기본 - 부모 클래스로 구성된 튜플. 파생 클래스가 아닌 경우 비어 있을 수 있습니다
-
dict - 속성, 메소드 및 해당 값을 포함하는 새 클래스의 사전 형성 네임스페이스입니다.
익명 수업 만들기
위 버전의 type() 함수를 사용하여 익명 클래스를 만들 수 있습니다. name 인수는 널 문자열이고, 두 번째 인수는 한 클래스인 객체 클래스의 튜플입니다(Python의 각 클래스는 객체 클래스에서 상속됩니다). 특정 인스턴스 변수를 세 번째 인수 사전으로 추가합니다. 지금은 비워두겠습니다.
anon=type('', (object, ), {})
익명 개체 생성
이 익명 클래스의 객체를 생성하려면 -
obj = anon()
print ("type of obj:", type(obj))
결과는 객체가 익명 클래스임을 보여줍니다
type of obj: <class '__main__.'>
익명 클래스 및 객체 예시
인스턴스 변수와 인스턴스 메소드를 동적으로 추가할 수도 있습니다. 이 예를 살펴보세요 -
def getA(self):
return self.a
obj = type('',(object,),{'a':5,'b':6,'c':7,'getA':getA,'getB':lambda self : self.b})()
print (obj.getA(), obj.getB())
다음과 같은 출력이 생성됩니다 -
5 6