Size: a a a

2020 October 19

E

Eugene in PiterPy Meetup
источник

E

Eugene in PiterPy Meetup
В Py3.9 кстати другая ошибка:
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "C:\Programs\Python\Python39_x64\lib\typing.py", line 1820, in _namedtuple_mro_entries
   raise TypeError("Multiple inheritance with NamedTuple is not supported")
TypeError: Multiple inheritance with NamedTuple is not supported

Они просто запретили multiple inheritance для NamedTuple. Нет мульти-наследования - нет проблемы. 😄
источник

Б

Боброний in PiterPy Meetup
Eugene
В Py3.9 кстати другая ошибка:
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "C:\Programs\Python\Python39_x64\lib\typing.py", line 1820, in _namedtuple_mro_entries
   raise TypeError("Multiple inheritance with NamedTuple is not supported")
TypeError: Multiple inheritance with NamedTuple is not supported

Они просто запретили multiple inheritance для NamedTuple. Нет мульти-наследования - нет проблемы. 😄
источник

E

Eugene in PiterPy Meetup
Я в итоге просто выбросил NamedTuple и сделал с attrs:
@attr.s(slots=True, auto_attribs=True)
class MyRecord(Record):
   ...


Мне больше нравится, когда явно видно, что класс реализует протокол. И IDE подсказывает лучше и стрелочки для методов рисует. Мелочь, а приятно. ☺️
источник

S

Stan in PiterPy Meetup
Eugene
Я в итоге просто выбросил NamedTuple и сделал с attrs:
@attr.s(slots=True, auto_attribs=True)
class MyRecord(Record):
   ...


Мне больше нравится, когда явно видно, что класс реализует протокол. И IDE подсказывает лучше и стрелочки для методов рисует. Мелочь, а приятно. ☺️
вообще не особо понимаю, зачем может быть нужен NamedTuple при живом-то dataclass)
источник

E

Eugene in PiterPy Meetup
Stan
вообще не особо понимаю, зачем может быть нужен NamedTuple при живом-то dataclass)
namedtuple удобен для распаковки
источник

Б

Боброний in PiterPy Meetup
Stan
вообще не особо понимаю, зачем может быть нужен NamedTuple при живом-то dataclass)
Iterable
источник

MV

Maxim Vasilev in PiterPy Meetup
Stan
вообще не особо понимаю, зачем может быть нужен NamedTuple при живом-то dataclass)
Он использует слоты и быстрее инициализируется?
источник

E

Eugene in PiterPy Meetup
датаклассы по сравнению с attrs довольно примитивны, например, не поддерживают __slots__
источник

MV

Maxim Vasilev in PiterPy Meetup
источник

A🚀

Andrey 🚀🚀🚀 Popp... in PiterPy Meetup
посмотрел что за pydantic и увидел что они хвастаются что его NSA использует 🙂
источник

E

Eugene in PiterPy Meetup
Andrey 🚀🚀🚀 Popp
посмотрел что за pydantic и увидел что они хвастаются что его NSA использует 🙂
источник

S

Stan in PiterPy Meetup
Eugene
namedtuple удобен для распаковки
какой?
источник

S

Stan in PiterPy Meetup
Maxim Vasilev
Он использует слоты и быстрее инициализируется?
я всегда склонялся к мнению, что если играет роль скорость создания объектов, то нужно или горизонтально масштабироваться или менять язык. Отказываться от датаклассов так себе идея
источник

E

Eugene in PiterPy Meetup
Stan
какой?
обычной, когда можно объект распаковать в отдельные переменные или использовать как есть.

a, b, c = my_tuple

Поэтому namedtuple удобен в качестве ReturnType из функции, которая возвращает несколько значений. Можно использовать как контейнер, либо сразу распаковать или взять срез/значение по индексу
источник

S

Stan in PiterPy Meetup
Eugene
обычной, когда можно объект распаковать в отдельные переменные или использовать как есть.

a, b, c = my_tuple

Поэтому namedtuple удобен в качестве ReturnType из функции, которая возвращает несколько значений. Можно использовать как контейнер, либо сразу распаковать или взять срез/значение по индексу
а зачем?
источник

S

Stan in PiterPy Meetup
чем плохо
result = foo()
print(result.bar)

?
источник

MV

Maxim Vasilev in PiterPy Meetup
Stan
я всегда склонялся к мнению, что если играет роль скорость создания объектов, то нужно или горизонтально масштабироваться или менять язык. Отказываться от датаклассов так себе идея
А почему отказываться от датаклассов так себе идея?
источник

MV

Maxim Vasilev in PiterPy Meetup
Если тебе нужно работать с питоновской экосистемой и не нужен механизм наследования ни в каком виде, ты просто передаешь строчки с данными
источник

MV

Maxim Vasilev in PiterPy Meetup
В случае с датаклассами у тебя будут происходить ненужные копирования, в случае с NamedTuple их будет меньше
источник