현재 모듈 안에 있는 모든 클래스를 리스트로 받아오는는 방법이 궁금합니다


보통 어떤 모듈 안에 클래스를 리스트로 받아올때는 이렇게 쓰던데

# foo.py
class Foo:
    pass

# test.py
import inspect
import foo

for name, obj in inspect.getmembers(foo): #foo모듈의 class받아옴
    if inspect.isclass(obj):
        print(obj) #<class 'foo.Foo'> 출력

제가 알고 싶은건 "이 모듈"안에 있는 클래스의 리스트입니다.

# foo.py
import inspect

class Foo:
    pass

def print_classes():
    for name, obj in inspect.getmembers(???): # ..? 뭘해야할까요?
        if inspect.isclass(obj):
            print(obj)

# test.py
import foo

foo.print_classes()

저 주석이 있는 부분을 어떻게 써야 할지 감이 안잡히는데 도와주시면 고맙겠습니다

  • 2016년 02월 15일에 작성됨

조회수 130


1 답변


좋아요
0
싫어요
채택취소하기
import sys
current_module = sys.modules[__name__]

코드에 이걸 넣으면

import sys, inspect
def print_classes():
    for name, obj in inspect.getmembers(sys.modules[__name__]):
        if inspect.isclass(obj):
            print(obj)

더 간결하게 만들면

clsmembers = inspect.getmembers(sys.modules[__name__], inspect.isclass)
  • 2016년 02월 15일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close