파이썬에서 오리 타이핑-3 실용적인 예

실용적인 예

파이썬에서 반복은 특정 작업을 수행하기 위해 항목 목록을 검토 할 수있게합니다. 반복을 만드는 일반적인 방법 중 하나는for루프를 사용하는 것입니다.

for i in iterable:
expression

이전 기사에서 설명한 것처럼for루프에서 반복 가능으로 사용할 수있는 사용자 지정 반복기를 만들 수 있습니다. 반복자에 대 한”오리 테스트”를 만족 시키기 위해 사용자 지정 클래스__iter__()__next__()메서드를 구현 해야 합니다. 구체적인 예가 아래에 나와 있습니다.

반복기에 오리 입력

위의 코드 스 니펫에서는 인스턴스가for루프에서 사용할 수 있도록 사용자 지정 클래스Cubes반복기의 인스턴스를 만드는__iter__()__next__()메서드를 모두 구현했습니다.

콜레 블

내장dict데이터 유형 외에도 다른 중요한 사전 유형은defaultdict이며collections모듈에서 사용할 수 있습니다. 이 사전과 같은 데이터 형식에는 다음 생성자가 있습니다.default_factory인수는 함수 또는 람다 함수와 같은 호출 가능한 형식입니다.

이전 기사에서 람다 함수를 전달하여defaultdict을 활용할 수 있음을 보여주었습니다. 여기 그것의 사용법의 보기는 있는다.

>>> from collections import defaultdict
>>> letter_counts = defaultdict(lambda: 0)
>>> for i in 'abcddddeeeee':
... letter_counts += 1
...
>>> letter_counts.items()
dict_items()

특히,우리는 우리가 우리 자신의 기본 팩터리를 만들 경우defaultdict데이터 유형을 사용하는 더 나은 유연성을 가질 수 있습니다. “오리 타이핑”철학을 통해 사용자 정의 클래스는__call__()메소드를 구현해야합니다.이 메소드는 호출 가능한 것을 만드는 것입니다. 그것이 어떻게 작동하는지 보자.

호출에 오리 입력

위의 코드와 같이,우리는 그__call__()함수 하나의Duckling인스턴스의 목록을 반환DucklingFactory클래스를 만듭니다. 이 팩토리 기능을 사용하면 기본 오리 목록을 곱하여 원하는 새끼 오리 수를 만들 수 있습니다.

렌 정렬()

오리 타이핑의 또 다른 가능한 사용법은 사용자 지정len()기능을 구현하는 것입니다.이 기능은sort()기능을 사용하여 목록을 정렬하는 데 사용할 수 있습니다. 이 장면 뒤에__len__()함수를 호출하여 구현되기 때문에 사이드 노트로,어떤 사람들은 마법 함수로len()함수를 참조하십시오(접두사와 접미사로 이중 밑줄이 그 함수는 마법 함수라고합니다).

우리는 각 오리의 이름의 길이에 따라 오리의 목록을 정렬 할 것을 가정하자. 이 경우 오리 타이핑을 적용 할 수있는 방법은 다음과 같습니다.

오리 정렬 입력

위의 코드 스 니펫에서 사용자 지정NamedDuck클래스는__str__()__len__()함수를 구현합니다. 중요한 것은 목록이 명명 된 오리 및 문자열과 혼합되어 있지만 모든 요소가str()len()함수를 호출 할 수 있으므로len()를 키로 사용하여 목록을 정렬하고 정렬 된 결과를 인쇄 할 때 목록 이해에 사용할 수 있다는 것입니다.

따라서,이 사용의 폭 넓은 의미는 우리가 서로 다른 데이터 유형의 요소의 혼합 목록이있는 경우,한 각 데이터 유형이 동일한 기능을 구현으로,요소가 오리 테스트를 통과하고 적절한 작업을 적용 할 것입니다. 다음은str,tuplelist의 혼합 데이터 유형 목록에서 렌()함수를 사용하는 일반적인 사용 사례 예입니다.

>>> mixed_list = ]
>>> mixed_list.sort(key=len)
>>> mixed_list
, (1, 2), 'Amazing']

You might also like

답글 남기기

이메일 주소는 공개되지 않습니다.