Форум сайта python.su
Здравствуйте, подскажите пожалуйста для чего в namedtuple нужен первый параметр:
Point = namedtuple('Point', ['x', 'y'])
Point = namedtuple( ['x', 'y']) p = Point(11, y=22)
Отредактировано dobriy_dada (Июнь 21, 2016 22:16:03)
Офлайн
dobriy_dadaЭто нужно для того, чтобы создать новый класс - подкласс класса tuple, который будет называться Point. Название нового класса передается в 1-м параметре в виде строки, этот параметр обязательный и пропускать его нельзя.
подскажите пожалуйста для чего в namedtuple нужен первый параметр
dobriy_dadaЭто не случайное повторение. Сначала производящей функции namedtuple() передается строка с названием нового класса, а для ссылки на возвращаемый этой функцией объект, который является новым классом, принимается название Point. (Да, в Python абсолютно все является объектами - классы, экземпляры этих классов и конечно же, функции - это тоже объекты). Конечно, не запрещается назвать ссылку на новый класс и другим именем. Но тогда будет сложнее работать с новым классом:
Для что это повторение сделано, в чём логика?
>>> Spam = namedtuple('Point', 'x, y') >>> s = Spam(10, 20) # попробуем создать объект класса Spam >>> s Point(x=10, y=20) # все равно это объект класса Point!
p = Point(11, y = 22)
>>> t = 3, 4 >>> p = Point(11, y = 22) >>> t (3, 4) >>> p Point(x=11, y=22)
Отредактировано old_monty (Июнь 22, 2016 00:21:13)
Офлайн
спасибо :-)
Офлайн
dobriy_dadaДля спасибо здесь специальная кнопочка есть. :-) Зеленая, со знаком +
спасибо :-)
Офлайн