누구든지 저에게 이유를 설명해 주시겠습니까?
해결 방법
ABC는 클라이언트와 구현 된 클래스간에 더 높은 수준의 의미 계약을 제공합니다.
클래스와 호출자간에 계약이 있습니다. 수업은 특정 일을하고 특정 속성을 갖겠다 고 약속합니다.
계약에는 여러 수준이 있습니다.
매우 낮은 수준에서 계약에는 메서드의 이름이나 매개 변수의 수가 포함될 수 있습니다.
그러나 계약에는 더 높은 수준의 의미 론적 약속도 있습니다.
예를 들어, __ str __ ()
메서드가있는 경우 객체의 문자열 표현을 반환해야합니다. 객체의 모든 내용을 삭제 하고 트랜잭션을 커밋하고 프린터에서 빈 페이지를 뱉어 낼 수 있습니다 ...하지만 Python 설명서에 설명 된대로 수행해야하는 작업에 대한 일반적인 이해가 있습니다.
의미 론적 계약이 매뉴얼에 설명되어있는 특별한 경우입니다. print ()
메소드는 무엇을해야합니까? 개체를 프린터에 써야합니까 아니면 화면에 줄을 써야합니까, 아니면 다른 무엇인가? 여기에 따라 전체 계약을 이해하려면 주석을 읽어야합니다. 단순히 print ()
메서드가 존재하는지 확인하는 클라이언트 코드 조각이 계약의 일부를 확인했습니다. 메서드 호출이 가능하지만 요구.
ABC (Abstract Base Class) 정의는 클래스 구현 자와 호출자간에 계약을 생성하는 방법입니다. 단순한 메서드 이름 목록이 아니라 이러한 메서드가 수행해야하는 작업에 대한 공유 된 이해입니다. 이 ABC에서 상속하는 경우 print ()
메서드의 의미를 포함하여 주석에 설명 된 모든 규칙을 따르겠다고 약속합니다.
파이썬의 덕 타이핑은 정적 타이핑에 비해 유연성면에서 많은 이점이 있지만 모든 문제를 해결하지는 못합니다. ABC는 자유 형식의 Python과 정적으로 형식화 된 언어의 속박 및 규율 사이의 중간 솔루션을 제공합니다.
참조 페이지 https://stackoverflow.com/questions/3570796
'파이썬' 카테고리의 다른 글
파이썬 URL로 링크를 따르는 Python 기계화 및 nr 매개 변수는 무엇입니까? (0) | 2020.11.08 |
---|---|
파이썬 Pip 설치-Python 2.7-Windows 7 (0) | 2020.11.08 |
파이썬 Anaconda Python : 가상 환경은 어디에 저장됩니까? (0) | 2020.11.08 |
파이썬 데이터 프레임의 열에서 사전 값 추출 (0) | 2020.11.08 |
파이썬에서 두 목록을 비교하고 일치하지 않는 것을 반환하는 방법 (0) | 2020.11.08 |
댓글