2012-12-11 2 views
0

: 같은 논리적으로 등가 (하지만 서로 다른 구문) 속으로모음 회원 테스트로 호출 테스트를 번역 시험과 같은 설정하는 가장 우아하고 파이썬 방법은 무엇

def is_even(n): 
    return n % 2 == 0 

시험 :

if n in even_numbers: 
    # assert is_even(n) 
    # ... 

나는 개체 even_numbers를 만들 수있는 몇 가지 방법을 생각할 수 있지만, 내가 간과 수있는 좋은 방법이 있다면 듣고 관심이 있어요.


참고 : 내 사용 사례가 argparse.ArgumentParser.add_argumentchoices kwarg와 직결되어 있으므로,이 아마 XY 문제 같은 소리 알고 있어요, 좋을 것 여부로 찾으면하기 위해 다른 방법이를 사용하거나 호출 가능 type kwarg.

나는 용기 타입으로 even_numbers을 설정 할

답변

1

: 다음

class EvenNumbers(object): 

    # Add other container methods as needed 

    def __contains__(self, value): 
     return value % 2 == 0 

even_numbers = EvenNumbers() 

,

>>> 3 in even_numbers 
False 
>>> 4 in even_numbers 
True