Tag: namedtuple

Соглашение об именах Python – namedtuples

Я новичок в Python, и я читал как онлайн-документацию, так и (пытается) следовать PEP 0008, чтобы иметь хороший стиль кода Python. Мне интересен сегмент кода, который я нашел в официальных документах Python, изучая библиотеку re: import collections Token = collections.namedtuple('Token', ['typ', 'value', 'line', 'column']) Я не могу понять, почему переменная Token называется с заглавной буквой; […]

Pythonic способ конвертировать словарь в namedtuple или другой хэшируемый dict-like?

У меня есть словарь вроде: d = {'a': 1, 'b': 2, 'c': 3, 'd': 4} который я хотел бы преобразовать в namedtuple. Мой текущий подход связан со следующим кодом namedTupleConstructor = namedtuple('myNamedTuple', ' '.join(sorted(d.keys()))) nt= namedTupleConstructor(**d) который производит myNamedTuple (a = 1, b = 2, c = 3, d = 4) Это работает отлично для […]

Должны ли namedtuples следовать постоянным соглашениям имен в python?

Я написал небольшой модуль python, где я использую пару названий, чтобы передавать информацию, потому что я нахожу их очень выразительными. Я рассмотрел эти типы и назвал их после соглашения PEP8 для имен классов (CamelCased). Однако pylint видит линию: PersonData = collections.namedtuple('PersonData', 'name surname age') в глобальном масштабе модуля и идет: Неверное имя константы 'PersonData'. Я […]

как добавить поля в namedtuple?

Я работаю со списком namedtuples. Я хотел бы добавить поле к каждому названному кортежу после его создания. Кажется, я могу это сделать, просто ссылаясь на него как на атрибут (как в namedtuple.attribute = 'foo' ), но затем он не добавляется в список полей. Есть ли причина, почему я не должен делать это таким образом, если […]

Почему я не могу мариновать typing.NamedTuple, в то время как я могу разжечь коллекцию.namedtuple?

Почему я не могу мариновать typing.NamedTuple то время как я могу typing.NamedTuple collections.namedtuple ? Как мне удастся NamedTuple ? Этот код показывает, что я пробовал до сих пор: from collections import namedtuple from typing import NamedTuple PersonTyping = NamedTuple('PersonTyping', [('firstname',str),('lastname',str)]) PersonCollections = namedtuple('PersonCollections', ['firstname','lastname']) pt = PersonTyping("John","Smith") pc = PersonCollections("John","Smith") import pickle import traceback try: […]

В чем преимущество использования `exec` over` type () `при создании классов во время выполнения?

Я хочу динамически создавать классы во время выполнения в python. Например, я хочу реплицировать следующий код: >>> class RefObj(object): … def __init__(self, ParentClassName): … print "Created RefObj with ties to %s" % ParentClassName … class Foo1(object): … ref_obj = RefObj("Foo1") … class Foo2(object): … ref_obj = RefObj("Foo2") … Created RefObj with ties to Foo1 Created […]

Эквивалент названного кортежа в NumPy?

Возможно ли создать объект NumPy, который ведет себя так же, как collection.namedtuple, в том смысле, что к элементам можно обращаться так: data[1] = 42 data['start date'] = '2011-09-20' # Slight generalization of what is possible with a namedtuple Я попытался использовать сложный тип данных: >>> data = numpy.empty(shape=tuple(), dtype=[('start date', 'S11'), ('n', int)]) Это создает […]

Как наложить кортеж в namedtuple?

Я хотел бы использовать namedtuples внутри, но я хочу сохранить совместимость с пользователями, которые кормят меня обычным кортежем. from collections import namedtuple tuplePi=(1,3.14,"pi") #Normal tuple Record=namedtuple("MyNamedTuple", ["ID", "Value", "Name"]) namedE=Record(2, 2.79, "e") #Named tuple namedPi=Record(tuplePi) #Error TypeError: __new__() missing 2 required positional arguments: 'Value' and 'Name' tuplePi.__class__=Record TypeError: __class__ assignment: only for heap types

Изменение аргументов конструктора namedtuple с помощью подкласса?

Я хочу создать namedtuple который представляет отдельные флаги в коротком поле бит. Я пытаюсь подклассифицировать его так, чтобы я мог распаковать битполе до того, как будет создан кортеж. Однако моя текущая попытка не работает: class Status(collections.namedtuple("Status", "started checking start_after_check checked error paused queued loaded")): __slots__ = () def __new__(cls, status): super(cls).__new__(cls, status & 1, status […]

Соответствие typename в namedtuple

from collections import namedtuple Point=namedtupe('whatsmypurpose',['x','y']) p=Point(11,22) print(p) Вывод: whatsmypurpose(x=11,y=22) Какова актуальность / использование 'whatsmypurpose' ?

Python - лучший язык программирования в мире.