44
Size: a a a
44
44
ᅠ
ᅠ
44
44
БГ
def accepts(*types):
def check_accepts(f):
assert len(types) == f.__code__.co_argcount
def new_f(*args, **kwds):
for (a, t) in zip(args, types):
if not isinstance(a, t):
raise TypeError(
"{} type(s) expexted, got {}".format(
', '.join(map(type, types)),
type(a)
))
return f(*args, **kwds)
new_f.__name__ = f.__name__
return new_f
return check_accepts
𝕬
def accepts(*types):
def check_accepts(f):
assert len(types) == f.__code__.co_argcount
def new_f(*args, **kwds):
for (a, t) in zip(args, types):
if not isinstance(a, t):
raise TypeError(
"{} type(s) expexted, got {}".format(
', '.join(map(type, types)),
type(a)
))
return f(*args, **kwds)
new_f.__name__ = f.__name__
return new_f
return check_accepts
ᅠ
ЕО
def accepts(*types):
def check_accepts(f):
assert len(types) == f.__code__.co_argcount
def new_f(*args, **kwds):
for (a, t) in zip(args, types):
if not isinstance(a, t):
raise TypeError(
"{} type(s) expexted, got {}".format(
', '.join(map(type, types)),
type(a)
))
return f(*args, **kwds)
new_f.__name__ = f.__name__
return new_f
return check_accepts
А
А
А
def accepts(*types):
def check_accepts(f):
assert len(types) == f.__code__.co_argcount
def new_f(*args, **kwds):
for (a, t) in zip(args, types):
if not isinstance(a, t):
raise TypeError(
"{} type(s) expexted, got {}".format(
', '.join(map(type, types)),
type(a)
))
return f(*args, **kwds)
new_f.__name__ = f.__name__
return new_f
return check_accepts
𝕬
БГ
def accepts(*types):
def check_accepts(f):
assert len(types) == f.__code__.co_argcount
def new_f(*args, **kwds):
for (a, t) in zip(args, types):
if not isinstance(a, t):
raise TypeError(
"{} type(s) expexted, got {}".format(
', '.join(map(type, types)),
type(a)
))
return f(*args, **kwds)
new_f.__name__ = f.__name__
return new_f
return check_accepts
БГ
БГ
func.__annotations__
, но тогда надо будет повторять всю логику питона по рассовыванию значений в переменные𝕬
func.__annotations__
, но тогда надо будет повторять всю логику питона по рассовыванию значений в переменныеБГ
44