Я попытался достичь этого, украсив __getiTem __ < /code> метод
foo, но без успеха. Ниже приведен пример кода. < /p>
Код: Выделить всё
def decorator(func):
def func_(*args, **kewargs):
if 'a' in kewargs:
args = list(args) + [kewargs['a']]
return func(*args)
else:
return func(*args)
return func_
class Foo(object):
@decorator
def __getitem__(self, *items):
return items
foo = Foo()
>>> foo.__getitem__(2, a=10)
(2, 10)
>>> foo[2, a=10]
SyntaxError: invalid syntax
< /code>
so foo [...] < /code> не эквивалентен foo .__ getitem __ (...) < /code>, что -то
за сцену сделано для первого. Мой вопрос в том, что именно и как
могу сделать foo [2, a = 10]
Подробнее здесь: https://stackoverflow.com/questions/319 ... -in-python