문제

나는 Pylons를위한 매우 간단한 CRUD 생성기 작업을 해왔습니다. 나는 검사하는 무언가를 생각해 냈습니다

SomeClass._sa_class_manager.mapper.c

이것을 검사해도됩니다 (아니면 밑줄로 시작하는 방법을 호출해도)? 나는 항상 클래스/객체의 내부 구조에 크게 의존하기 때문에 이것이 합법적이라고 가정합니다. 그러나 파이썬은 실제로 Java 감각에 인터페이스가 없기 때문에 괜찮을 것입니다.

도움이 되었습니까?

해결책

의도적 인 (파이썬) "개인"스코프가 없다는 것입니다. 밑줄로 시작하는 모든 것이 이상적으로 사용해서는 안되며, 따라서 다음 버전에서 동작이나 정의가 변경되는 경우 불만을 제기하지 않을 수 있습니다.

다른 팁

일반적으로 이것은 일반적으로 방법이 문서화 된 인터페이스의 일부가 아닌 효과적으로 내부적이며 의존해서는 안된다는 것을 나타냅니다. 미래 버전의 라이브러리는 그러한 방법을 자유롭게 바꾸거나 제거 할 수 있으므로, 다시 쓰지 않고도 미래의 호환성에 관심이있는 경우, 그렇게하지 마십시오.

그것이 작동한다면 왜 그렇지 않습니까? _SA_CLASS_MANAGER가 재구성 되거나이 특정 버전의 SQLALCHEMY에 자신을 바인딩하거나 변경 사항을 추적하기위한 더 많은 작업을 만들 때 문제가 발생할 수 있습니다. Sqlalchemy는 빠르게 움직이는 목표이므로 이미 1 년 안에있을 수 있습니다.

바람직한 방법은 원하는 API를 SQLALCHEMY 자체에 통합하는 것입니다.

이미 언급 된 이유 때문에 일반적으로 좋은 생각이 아닙니다. 그러나 파이썬은 다른 일을 할 수있는 다른 방법이없는 경우 의도적 으로이 행동을 허용합니다.

예를 들어, 저자가 특정 객체의 내부 상태에 직접 액세스 할 필요가 없다고 생각하는 폐쇄 소스 컴파일 된 Python 라이브러리가있는 경우, 실제로 필요한 정보를 얻을 수 있습니다. 당신은 다른 버전을 따라 잡기 전에 언급 된 것과 같은 문제가 있지만 (여전히 유지 될 정도로 운이 좋으면) 적어도 실제로 원하는 일을 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top