
Hy Pythonista! 내 말과 같이 pyoload 에게 기꺼이 발표하게되어 기쁩니다.
런타임 동안 기능 인수 및 클래스 속성의 확장 및 재귀 유형 확인 및 캐스팅을위한 파이썬 모듈
여기서 우리는 런타임 중에 확인을 입력하는 데 도움이되는 데코레이터 및 디스크립터를 포함하여 파이썬이 제공하는 아름답고 깨끗한 기능을 사용합니다.
이 PYPI 페이지를 채우기위한 간단한 사용 예제는 다음과 같습니다.
이 데코레이터 함수는 inspect.signature 의 힘을 사용하여 기본값, 일반적인 Aliase 및 주석을 지원하는 주석을 사용하여 기능에 전달 된 인수를 확인하여 편의를 위해 더 많은 주석 유형을 추가하고 일부 코드를 낮추십시오.
from pyoload import *
@ annotate
def foo (
a : str , # this has an annotation
b = 3 , # this uses a default value
c : int = 0 # here both
) -> tuple [ str , int ]: # The return type
... from pyoload import *
@ annotate
def foo (
b = dict [ str | int , float ], # here a GenericAlias
c : Cast ( list [ int ]) = '12345' # here a recursive cast
): # No return type
...이것은 주석과 동일한 원칙을 사용하지만 기능의 다중 발송 (일명 런타임 과부하?)을 허용합니다.
from pyoload import *
@ multimethod
def foo ( a , b ):
print ( "two arguments" )
@ multimethod
def foo ( a : Values (( 1 , 2 , 3 ))):
print ( 'either 1, 2 or 3' )
@ foo . overload
def _ ( a : Any ):
raise ValueError ()이것이 Pyoload가 표준 주석에 추가하는 것입니다.
메모
추가 된 주석은 여전히 표준 유형과 합병 할 수 없습니다.
pyoload.Values 간단한 tuple 서브 클래스는 주석으로 사용하면 포함 된 값 만 검증합니다.
@ annotate
def foo ( bar : Values ( range ( 5 ))):
...pyoload.Cast 이것은 전달 된 인수의 dict 적 주조를 지정된 유형으로 수행합니다 dict[str, int | str] 및 유형이 노조 일 때 지정된 순서로 캐스트를 시도합니다.
@ annotate
def foo ( bar : Cast ( tuple [ int | str ])):
print ( bar )
foo (( 3 , "3" )) # (3, 3)
foo (( 3j , " " )) # ('3j', ' ')pyoload.Checks사용자 정의 검사기 방법을 사용할 수 있습니다
from pyoload import *
test = lambda val : True # put your check here
def foo ( a : Checks ( func = test ):
... 수표 이름이 _ 로 전제되면 무시하고 실패하면 예외가 제기됩니다. Check.register 사용하여 자신의 수표를 등록 할 수 있습니다.
@ Check . register ( 'mycheck' )
def _ ( param , value ):
print ( param , value )
Checks ( mycheck = 'param' )( 'val' ) # Will raise error on check failure
@ annotate
def foo ( a : Checks ( mycheck = 'param' )):
... 점검은 주석으로 사용할 수 있습니다. pyoload.Checks 사용하여 Checks(foo=bar)(val) ; 또는 pyoload.Checks 사용하여 직접 호출했습니다 : Check.check(name, param, arg)
인수로 수신 정수 값은 예상 길이 또는 길이를 찾아야 할 슬라이스를 지정했습니다.
파라미터에서 값으로의 수보다 적은 수보다 수가 비교됩니다.
유효성 검사를 위해 함수를 사용하면 함수가 부울을 반환하거나 오류를 일으킬 수 있습니다. Pyoload.Checks AS : Checks(func1, func2, foo=bar, foo2=bar2) 에 대한 위치 인수로 직접 전달 될 수 있습니다.
CheckedAttr 및 CastedAttr 은 캐스팅 또는 과제에 대한 확인을 수행하는 간단한 설명 자입니다.
from pyoload import *
class address :
number = CastedAttr ( tuple [ int ])
값은 과제시 확인 또는 캐스트됩니다
메모
아직 초기화되지 않은 경우 속성은 None 반환하지 않습니다