Что произошло внутри во время распаковки dict? [Дубликат]

, когда вы возвращаете буфер, тогда как он действует как указатель на первое местоположение массива, чтобы он возвращал свой адрес. И там, где вы вызываете функцию, вы можете сделать указатель на символ, который будет хранить этот возвращаемое значение адреса. После этого вы можете переместить указатель и получить доступ ко всем элементам вашего массива.

50
задан dskinner 22 December 2011 в 10:39
поделиться

2 ответа

Будет достаточно методов __getitem__() и keys():

>>> class D:
        def keys(self):
            return ['a', 'b']
        def __getitem__(self, key):
            return key.upper()


>>> def f(**kwds):
        print kwds


>>> f(**D())
{'a': 'A', 'b': 'B'}
68
ответ дан Ashwini Chaudhary 18 August 2018 в 06:15
поделиться

Если вы пытаетесь создать сопоставление - не просто удовлетворяете требованиям для передачи функции - тогда вы действительно должны наследовать от collections.Mapping. Как описано в документации , вам нужно реализовать только:

__getitem__
__len__
__iter__

. Mixin выполнит для вас все остальное: __contains__, keys, items, values, get, __eq__ и __ne__.

21
ответ дан Neil G 18 August 2018 в 06:15
поделиться
  • 1
    вне рамок, но имеет актуальность и информативен, спасибо – dskinner 23 December 2011 в 19:26
Другие вопросы по тегам:

Похожие вопросы: