스택큐힙리스트

파이썬에서 현재 모듈 내에 있는 모든 클래스 목록을 어떻게 얻을 수 있나요? 본문

카테고리 없음

파이썬에서 현재 모듈 내에 있는 모든 클래스 목록을 어떻게 얻을 수 있나요?

스택큐힙리스트 2023. 4. 12. 12:02
반응형

나는 모듈에서 클래스를 모두 추출하는 사람들의 많은 예시를 보았다. 일반적으로 이러한 방식으로 한다.

# foo.py

class Foo:

pass

# test.py

import inspect

import foo

for name, obj in inspect.getmembers(foo):

if inspect.isclass(obj):

print obj

멋지다.

하지만 현재 모듈에서 모든 클래스를 가져오는 방법을 찾을 수 없습니다.

# foo.py

import inspect

class Foo:

pass

def print_classes():

for name, obj in inspect.getmembers(???): # what do I do here?

if inspect.isclass(obj):

print obj

# test.py

import foo

foo.print_classes()

이건 아마도 굉장히 분명한 것이지만, 난 아무것도 찾지 못했어. 누군가 도와줄 수 있을까?

답변 1

이것을 시도해보세요.

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)

inspect.getmembers()가 술어를 취한다는 이유 때문입니다.

답변 2

파이썬은 모듈 기반 언어입니다. 모듈은 관련된 코드를 하나의 파일에 캡슐화하여 코드의 구조를 조직화하는 방법입니다. 모듈을 사용하면 코드를 구성하고 중복을 줄일 수 있습니다.

특정 모듈에서 모든 클래스 목록을 가져오는 방법은 매우 간단합니다. 파이썬에서는 내장 모듈인 inspect 모듈을 사용하여 현재 모듈의 클래스 목록을 가져올 수 있습니다.

inspect 모듈을 사용하는 방법은 다음과 같습니다. 우선 inspect 모듈을 가져와야 합니다.

import inspect

그런 다음 inspect.getmembers() 함수를 사용하여 현재 모듈의 클래스 목록을 가져옵니다.

members = inspect.getmembers(sys.modules[__name__], inspect.isclass)

위 코드는 현재 모듈의 클래스 목록을 가져와 members 변수에 저장합니다.

inspect.getmembers() 함수는 튜플의 리스트를 반환합니다. 튜플의 첫 번째 요소는 클래스의 이름이며 두 번째 요소는 클래스 자체입니다. 이 리스트를 이용해 클래스 목록을 생성할 수 있습니다.

class_list = [m[1] for m in members]

이제 class_list 변수에는 현재 모듈의 모든 클래스 목록이 포함되어 있습니다.

이 방법을 사용하면 현재 모듈의 클래스 목록을 쉽게 가져올 수 있습니다. 현재 모듈의 클래스 목록을 가져와 코드를 보다 잘 구성하고 중복을 줄이는 데 도움이 될 수 있습니다.

종합하면, 파이썬에서는 inspect 모듈을 사용하여 현재 모듈의 클래스 목록을 가져올 수 있습니다. 이 방법을 사용하면 코드를 보다 잘 구성하고 중복을 줄일 수 있으며, 모듈 기반 언어인 파이썬의 특징을 효과적으로 활용할 수 있습니다.

반응형
Comments