필자는 전통적으로 Perl 및 C++ 프로그래머입니다. 파이썬에 대해 사소한 것을 오해하고 있다면 사전에 사과드립니다!Python : 참조에 대한 참조를 만드는 방법은 무엇입니까?
참조에 대한 참조를 만들고 싶습니다. 응? 승인. 파이썬의 모든 객체는 실제 객체에 대한 참조입니다. 그럼이 참조에 대한 참조를 어떻게 만듭니 까?
왜 내가 필요합니까/필요합니까? sys.stdout 및 sys.stderr을 오버라이드하여 로깅 라이브러리를 작성합니다. 나는 sys.stdout에 대한 (2 차 수준의) 참조를 원한다.
참조에 대한 참조를 만들 수 있다면 init 함수가 재정의 될 파일 핸들 참조 (예 : sys.stdout 또는 sys.stderr)에 대한 참조를받는 일반 로거 클래스를 만들 수 있습니다. . 현재 두 값을 모두 하드 코딩해야합니다.
건배, 케빈
얼굴이 그 [sys.stdout = MyLogger (SYS는 .stdout)]는 파이썬이 무언가를 놓치고 있다는 증거가 될 수 없다. 아직도 나는 내가 본 모든 것을 좋아한다. 다행히도 두 가지 파일 핸들 만 재정의 할 수 있습니다. 나는 두 번 반복 할 수있는 '여유'=) 조언을 주셔서 감사합니다. 이 솔루션은 필자의 원래 요구 사항에 가장 밀접하게 부합합니다. – kevinarpe
아, 또한. \ __ getattr__이있는 멋진 팁. 나는 추가 할 것이다. – kevinarpe
'stdout'과'stderr'를 오버라이드 했습니다만,'write' 메소드를 가진 객체/클래스로 대체 할 수 있습니다 (대체 파일처럼'sys.stdout = open ('mylog ','wb ')'이 효과적 일 것입니다.) 제한이 없다고 생각합니다. 다른 철학과는 다른 언어 일뿐입니다. 파이썬 철학에 반대하는 객체에 대한 참조입니다 (http : // www. python.org/dev/peps/pep-0020/), 필자는 perl의 "표현형"모델에 맞을 것이라고 확신하지만 자신의 장점과 단점을 가지고 있습니다 : -P – cryo