XML 파일이 포함 된 스트림을 예상하는 클래스가 있습니다.
필자는 파일 스트림이 필요 없으며 데이터베이스, 소켓 등과 같은 다른 소스를 사용하려고합니다.
다른 소스에서 스트림 인터페이스를 제공하려면 어떤 클래스를 io module에서 서브 클래스해야합니까?Python에서 스트림 클래스 만들기
답변
동적 타이핑을 사용하면이 경우 모든 기본 클래스에서 하위 클래스로 분류 할 수 없습니다. 적절한 메소드를 구현해야한다. Blog post on the subject
내가 얻지 못하는 이유는 하위 클래스를 사용하지 않아야하는 이유입니다. 어쨌든 내 인터페이스는 스트림의 인터페이스 여야합니다. –
상속 메커니즘을 사용하여 하위 클래스를 만들 수 없으며 클래스를 만들고 필요한 서명이 필요한 메소드를 구현할 수 있다고 썼습니다. – Andrey
Andrey이 제공 한 답변이 완전히 올바르지 않습니다.
파이썬에서 스트림은 "파일 형"객체입니다. io 모듈에 정의 된 도구를 사용하여 읽고 쓸 수 있습니다. 이 모듈은 또한 스트림 객체를 정의하려는 경우 구현해야하는 인터페이스를 제공합니다.
io
모듈은 약간 다른 인터페이스가 필요한 세 가지 유형의 스트림을 구분합니다. (그들은 데이터 형식의 측면에서 주로 차이가 있습니다.)
- 텍스트 I/O - 인터페이스 TextIOBase
- 바이너리 I/O - 인터페이스 BufferedIOBase
- 원시 I/O - 인터페이스 RawIOBase
예를 들어, StringIO는 TextIOBase의 메모리 내 구현입니다.
이러한 인터페이스는 파이썬 2와 3 모두에서 사용할 수 있습니다.
- 1. Python에서 LazilyEvaluatedConstantProperty 클래스 만들기
- 2. Python에서 대기 객체 만들기
- 3. Python에서 날짜 간격 만들기
- 4. Python에서 키 명령어 만들기
- 5. Python에서 http 서버 만들기
- 6. Python에서 C# 라이브러리의 래퍼 만들기
- 7. Python에서 변수가있는 클래스의 인스턴스 만들기
- 8. Python에서 클래스 가져 오기
- 9. Python에서 목록 클래스 생성
- 10. Python에서 MVC 클래스 레이아웃하기
- 11. Python에서 클래스 패칭
- 12. Python에서 객체 클래스 찾기
- 13. Python에서 클래스 참조하기
- 14. Python에서 SQL Server 데이터베이스 만들기
- 15. Python에서 NTFS 연결 지점 만들기
- 16. Python에서 머리 글자 어 만들기
- 17. zlib을 사용하여 gzip 스트림 만들기
- 18. 문자열을 생성하는 FILE * 스트림 만들기
- 19. 원격 서버에 스트림 데이터베이스 만들기
- 20. Python에서 클래스 인스턴스의 트리로 작업하기
- 21. python에서 빈 클래스 멤버 선언
- 22. Python에서 다른 클래스 메서드 호출
- 23. python에서 새 하위 프로세스 만들기 gtk
- 24. Python에서 Excel로 새 통합 문서 만들기
- 25. 일련의 이미지에서 비디오 스트림 (AVI) 만들기
- 26. 스트림 래퍼를 사용하여 zip 아카이브에 파일 만들기
- 27. C#에서 MJPEG 비디오 스트림 만들기
- 28. objective-c 파일 생성 이벤트 스트림 만들기
- 29. Perl 또는 Python에서 Java 클래스 구문 분석
- 30. Python에서 클래스 멤버 변수 무시 (Django/Satchmo)
소켓은 이미 다른 파일과 인터페이스가 동일합니다. 데이터베이스 연결은 일반적으로'blob '을 제공하는데,'blob'은'StringIO'를 사용하여 파일 라인 객체로 바뀔 수 있습니다. "스트림"인터페이스 (즉, 파이썬의'file')가 이미 존재할 때 무언가를 서브 클래 싱하는 이유는 무엇입니까? 고유하거나 다른 점은 무엇입니까? –
왜 파생됩니까? 파이썬은 C++이 아닙니다. 적절한'read()'메소드를 가진 뭔가를 전달하는 것만으로 충분하지 않습니까? – 6502
@ 6502 : XML 파일을 데이터베이스에서 스트림으로로드 할 수 있습니다. 나는 단지 행동을 캡슐화하고있다. –