액면가에서 C-API 함수 PyModule_New
과 PyModule_NewObject
은 분명히 새로운 모듈 객체를 생성합니다.PyModule_New의 목적과 용도
official Python Documentation는 PyModule_NewObject
에 대한 다음 설명을 제공 :
반환 이름으로 설정 이름 속성을 가진 새 모듈 객체입니다. 모듈의 문서 및 이름이 인 경우에만 채워집니다. 호출자는 파일 속성을 제공 할 책임이 있습니다. 그 대신
PyObject*
문자열, 모듈 이름에 대한 인수로 C 문자열 (char*
)를 받아들이는 제외
PyModule_New
은 같은 일을한다.
좋아, 그래서 이것은 매우 간단합니다,하지만 ...
내 질문은 : API 함수 PyModule_NewObject
전화의 사용은 무엇인가?
확실히 이론적으로 새로운 모듈을 동적으로 만들고 싶을 때 좋습니다. 그러나 문제는 실제적으로 새로운 모듈 객체를 만든 후에 객체에 메서드, 클래스, 변수 등과 같은 객체를 추가하는 것이 모듈의 __dict__
속성에 유용하다는 것입니다. 이 방법으로 모듈 사용자는 모듈을 가져 와서 실제로 그 모듈로 무언가를 할 수 있습니다.
문제는 모듈의 __dict__
속성이 있다는 것이다 읽기 전용 :
>>> import re
>>> x = re
>>> re.__dict__ = { "foo" : "bar" }
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: readonly attribute
그래서, 실제로, 유용 아무것도 할 수있는 방법은 정말 없다 내가 볼 수있는 한 동적으로 만들어진 모듈. 그렇다면 C API 함수의 목적은 무엇입니까 PyModule_New
?