Диалоги гениев
Muriam (новичок): Ребята, привет! Есть ли в Python понятие структуры, как в C++? Типа такого:
Мне нужно портировать программу с алгоритмом Краскала на Python.
IT_Exp (ветеран форума): Привет. Нет, структур в Python нет. Есть классы.
Garry Galler (гуру Python):
Кто-нибудь ещё скажет, что нет структур, и я начну думать, что вы в Питоне кодите через Excel. Конечно, они есть.
Вот вам namedtuple
:
Легко, изящно и не вызывает странных флэшбэков с #include
.
tooru (энтузиаст с лишней энергией):
Ну, или через __slots__
, чтобы память экономить:
Но если экономия памяти вам не нужна, то зачем вы вообще тут?
Viktorrus: Зачем такие сложности? Вот вам просто класс:
На Python не надо усложнять. Мы тут все за минимализм. У нас даже памяти на типизацию нет!
dondublon (глубокий философ): Ах, вы хотите, чтобы Python был как C++? Это звучит, как просьба сделать ваши шоколадные конфеты похожими на суп из сельди.
Но я вас понял. Вот вам модуль ctypes
:
Только знайте: если вы пойдёте по этому пути, назад дороги нет.
Muriam: Ребят, я в замешательстве. Столько вариантов, а что выбрать?
Admin_Troll (модератор-юморист): Выбрать? Это Python. Тут никто ничего не выбирает, тут просто делают так, чтобы работало. Если хотите, чтобы было "как в C++", ставьте компилятор C++ и сделайте вид, что это Python.
Muriam: Но ведь Python должен быть проще!
Admin_Troll: Просто? В Python просто только одно: когда вы через месяц начнёте переделывать свой код, вы будете винить всех, кроме себя.
Garry Galler: Ладно, хватит юмора. Вот вам правильный ответ:
Классическое, универсальное решение. Как и ваше терпение, хватит для любых задач.
Muriam: Спасибо. Вроде разобрался.
Admin_Troll (заключительное слово): Ну что ж, добро пожаловать в Python, где нет структур, нет строгости, но зато есть радость от того, что у вас наконец-то работает код. И если нет – вы всегда можете винить белый пробел.
Last updated