2014-01-20 2 views
3

저는 파이썬에서 클래스 초기화에 대한 여러 게시물을보고있었습니다 (예 : Ref1, Ref2, Ref3). 특정 입력이 필요한 깨끗한 방법이 있는지 찾을 수 없었습니다. 명명 된 인수가 필요하고 인수가 포함되지 않은 경우 일관된 예외가 발생하는 가장 좋은 방법은 무엇입니까?클래스 생성자에 대한 입력을 요구하는 우아하고 파이썬적인 방법이 있습니까?

add_argument() 메서드의 require 매개 변수와 비슷한 기능을 ArgumentParser에 갖고 싶습니다.

답변

5

이런 식으로 뭔가 작업을해야합니다 :

class Foo(object): 
    def __init__(self, required_arg=None): 
     if required_arg is None: 
      raise ValueError("Expected non-None value for required_arg") 

당신이 한 일이 명시 적으로 공급되는, 당신이 할 수있는, 유효한 값을 수 아무것도을 원하는 경우 :

_Foo_default = object() 
class Foo(object): 
    def __init__(self, required_arg=_Foo_default): 
     if required_arg is _Foo_default: 
      raise ValueError("Expected a user-supplied value for required_arg") 
관련 문제