Форум сайта python.su
857
Вот пример
https://doc.qt.io/qt-5/qlocalserver.html
>>> import PyQt5.QtNetwork >>> >>> PyQt5.QtNetwork.QLocalServer.UserAccessOption 1 >>>
AlekseyPythonЭто не моя проблема, так как этот префикс AA не я придумывал, чтобы защитить имя константы от столкновения с таким же именем константы для другого класса. Это они собрали всё в одну кучу, а потом стало понятно, что стало сложно придумывать новые имена километровые. AA - это пространство имём в старом стиле, когда ещё не было классов в языках. Древние функции fopen() и fclose() как раз и используют букву f для задания пространства имён. Так мы понимаем, что функции open() и close() относятся к файловому объекту. Это древний метод. И вот к этому древнему методу вернулись в Qt, так как не расчитали, что начнутся коллизиии, когда имён станет слишком много.
Такая проблема возниакает только если у вас неправильный стиль программирования
Отредактировано py.user.next (Дек. 3, 2018 11:01:22)
Офлайн
0
Для свойства socketOptions класс предоставляет внутренние константы, которые можно использовать снаружи.
..чтобы защитить имя константы от столкновения с таким же именем константы для другого классаА зачем вы константу из класса используете в клиентском коде? Потому что реализуете там какую- то бизнес- логику присущую этому классу (если такое значение константы, то я поступлю вот так, а если другое, то я сделаю иначе). Собирите всю бизнес- логику в классе и не придется анализировать какие- либо константы.
Отредактировано AlekseyPython (Дек. 3, 2018 11:59:39)
Офлайн
294
AlekseyPythonтам идут почти идентичные выражения отличающиеся одной строчкой. Но это не суть, иногда такое бывает , особенно когда нужно чтото быстро написать “на коленке”, чтоб вот оно заработало “прям щас”, но потом это все всеравно нужно причесывать. Подумайте об другом, в мире десятки тысяч программистов пишущих на пайтоне, если бы действительно “self”-ы замусоривали исходники, и мешали читаемости, эту проблему давно бы уже подняли и както научились обходить, или придумали какойнитб спецсимвол заменяющий self.
В каждой ветке дальше идут РАЗНЫЕ выражения.
AlekseyPythonв первую очередь изза простоты, скорости написания и чтения кода, а отнюдь не изза класов. Python поддерживает несколько парадигм программирования: структурное, объектно-ориентированное, функциональное, императивное и аспектно-ориентированное.
Тогда зачем было мучатся и писать Python, если в итоге пришли к тому же Си?
AlekseyPythonосновной смысл публикации не пишите классы там где они не нужны.
Основной смысл публикации: пишите максимально ПРОСТОЙ КОД.
AlekseyPythonВ определенных случаях, такой подход даже приветствуеться и позволяет повысить быстродейтвие.
Спасибо, я уже думал об этом, но посчитал, что упадет производительность.
AlekseyPythonА вы что же на каждый чих обьявляете новый атрибут?
2. Переменные нужные только в одном методе не делать членами объекта, а создавать в виде локальных переменных метода (и передавать их вниз по стеку в качестве параметров методов).
[code python][/code]
Офлайн
857
AlekseyPythonЭто свойство объекта. Чтобы устанавливать его значения, сделано перечисление в классе. Чтобы передать аргумент в этот метод установки значения, мы берём имя класса и через него получаем доступ к перечислению внутри класса.
Если вы слегка потрудитесь и посмотрите список публичных функций в вашей ссылке, то увидите такие:
void setSocketOptions(QLocalServer::SocketOptions options)
QLocalServer::SocketOptions socketOptions() const
, т.е этот параметр читается / пишется с помощью специальных публичных методов, которые по сути являются интерфейсами к внтуреннему полю.
server.setSocketOptions(QLocalServer::UserAccessOption | QLocalServer::GroupAccessOption);
AlekseyPythonКакую бизнес-логику собирать в классе, если она не относится к его внутренностям? Мы используем класс снаружи и общаемся с его методами на его языке. Класс знает, что означают его константы, какие у них значения, а мы их просто используем, чтобы давать его методам определённые команды. При этом он является пространством имён, позволяя делать эти константы с любыми именами, не оглядываясь на константы других классов.
Собирите всю бизнес- логику в классе и не придется анализировать какие- либо константы.
Отредактировано py.user.next (Дек. 3, 2018 13:28:00)
Офлайн
294
AlekseyPythonм-да, чувак, в основном, лепит какието свои фантазии, и на этом основани иделает выводы что все не умеют програмировать.
Егор Бугаенко — Объектно-ориентированное вранье
[code python][/code]
Офлайн
857
PEHDOMТам в конце слушатели над ним прикалываются
м-да, чувак, в основном, лепит какието свои фантазии
Офлайн
294
py.user.nextДа, прям слушаю, и в голове такое :"Нам нужно построить больше
Там в конце слушатели над ним прикалываются
[code python][/code]
Офлайн
27
Я всего лишь юзверь, пишущий краткие скрипты, но несмторя на это выскажу свою мнение про подход ТС к ООП. Такой подход мне не очень нравится. Это какая-то крайность, в которую не следует впадать.
В лекции
AlekseyPythonлектор утверждает, что “чем больше маленьких классов в коде, тем лучше”. Там же подаётся идея: на каждый чих - свой класс.
Егор Бугаенко — Объектно-ориентированное вранье
AlekseyPythonВопрос к ТС: для средненького проектика сколько файдов надо создать? 1001+ ? Как разобрться потом в такой уйме файлов?
В каждом модуле у меня будет только по 1 классу…
Офлайн
0
Подумайте об другом, в мире десятки тысяч программистов пишущих на пайтоне, если бы действительно “self”-ы замусоривали исходники, и мешали читаемости, эту проблему давно бы уже подняли и както научились обходить, или придумали какойнитб спецсимвол заменяющий self.

Офлайн
0
При этом он является пространством имён, позволяя делать эти константы с любыми именами, не оглядываясь на константы других классов.
Отредактировано AlekseyPython (Дек. 4, 2018 08:16:58)
Офлайн