• Объекты в python?

    @MechanicZelenyy
    Если кратко: здесь имеется ввиду что существует первородный класс _object_ и все остальные типы (включая пользовательские и дефолтные) являются наследниками этого класса. Для примера строка это объект (в значении этого слова как экземпляр класса) класса str, но данный класс является наследником класса object.

    Если более полно то рекомендую читать Лутца, он рассказывает в том числе и об внутреннем устройстве python.
    Ответ написан
    Комментировать
  • Объекты в python?

    @rudikov
    Касательно фразы "Объект это ведь экземпляр класса".
    Эта фраза из объектно-ориентированного программирования (ООП). Сама она значит, что у каждого объекта есть какой-то класс, или иначе говоря объект является его экземпляром. Но здесь Вы смешиваете объектную модель Python с ООП, а это разные вещи. В Python любой экземпляр класса это объект, но далеко не все объекты это просто экземпляры класса.
    К примеру, объектом является также класс, экземпляры этого класса (которые в ООП и называются объектами) тоже объекты, но лишь одни из возможных видов объектов в Python.
    В Python, чтобы быть объектом участку памяти нужно иметь тип и количество ссылок на этот участок памяти (https://habrahabr.ru/company/buruki/blog/189986/).
    Перечень всех встроенных типов можно найти здесь: https://docs.python.org/3/library/stdtypes.html.

    Что касается "объект строки это экземпляр от какого то класса?".
    Если говорить на языке ООП есть класс строк (в Python его имя str), любая конкретная строка, например 'я_строка', есть экземпляр класса строк или, иначе говоря, объект класса строк.
    А если говорить на языке объектной модели Python: str - класс объектов, который и сам тоже объект.
    А любой его экземпляр (какая-либо строка) - тоже объект.
    В общем в ООП экземпляр и объект одно и то же, в Python - нет.

    С практической точки зрения фраза "все есть объект" говорит, что что угодно можно присвоить переменной, передать в качестве аргумента функции, вернуть, как результат функции и т.д.
    Например, в качестве аргумента или результата функции может быть другая функция или даже какой-либо класс (встроенный или созданный Вами).
    Вообще такие вещи определяют гибкость языка, что в свою очередь иногда позволяет сделать значительно более простое и короткое решение.
    Ответ написан
    1 комментарий
  • В чем преимущества *nix, linux перед windows (для веб разработчика)?

    proshin
    @proshin
    Java web developer
    Я бы добавил в список преимуществ линукса вот что:
    - в линуксе везде по умолчанию используется UTF-8, а в винде - CP1251
    - в линуксе файлы с расширениями 1.JPG и 1.jpg будут "указывать" на разные файлы, для винды это один и тот же файл (при работе с Git в винде это иногда напрягает - видишь JPG, хочешь переименовать в jpg, а фига).
    - по моим личным наблюдениям файловая система в линуксе быстрее работает, чем в винде (Ext4 против NTFS; один и тот же жесткий диск).
    - ну и как бонус: в линуксе ты не можешь "по-быстрому погамать несколько часов пока проект компилится" - но это уже мелочи.
    В конце же концов, нужно выбирать ту систему, где удобно работать - сейчас любую софтину можно запустить на любой ОС.
    Ответ написан
    2 комментария
  • В чем преимущества *nix, linux перед windows (для веб разработчика)?

    nki
    @nki
    bezkart.ru готовая система лояльности
    Участвовал в разработке крупного веб-сервиса. Вся разработка велась на винде. Проблем не было. Все замечательно работает по сей день.
    Ответ написан
    Комментировать
  • В чем преимущества *nix, linux перед windows (для веб разработчика)?

    @spotifi
    Нету никаких проблем.
    Если только ваше конкретное используемое для ваших задач ПО нормально работает с Windows.

    Например, в моем случае используется Ansible и Docker, который не поддерживается на Windows. Приходится использовать Vagrant. Это достаточно удобно. Но ресурсы все же кушает.

    А так - даже Vim хорошо себя чуствует на Windows. Нативный. Не cygwin.

    Microsoft это тоже понимает.
    И вот уже они встроили подсистему Linux Ubuntu в Windows 10. Это не виртуализация, а именно полноценная подсистема.

    И многие вещи, например, те же шрифты - в Windows работают лучше, чем под Linux.

    Могут сказать - что лучше использовать для разработки ту же среду что и для production.

    Но дело в том, что даже если вы сидите на Ubuntu Desktop, то ваша среда серьезно отличается от среды сервера FreeBSD, CentOS, Debian, Ubutntu Server. И для полноценного CI все равно умные дядьки категорически рекомендуют и на Linux даже использовать Docker для полноценной эмуляции.

    Но ведь Docker-то можно использовать и на Windows. Правда, запускается он там подольше.

    Где именно вести разработку, где вам удобнее - это ваше личное дело. Вопрос ваших предпочтений. Никаких объективных причин в наше время, когда существуют Docker, Vagrant и виртуальные машины, когда куча приложений изначально сделанных для *nix запускаются в native под Windows - нет никаких причин себя строить. Кроме любопытства - а как оно там на других системах живется.

    У тех кто вас троллит есть еще одна причина: им приятно показать себя более умными. Как же - ведь Linux можно сконфигурить руками.

    Ага, конечно.

    Или используют готовые десктопные дистрибутивы. Не зря Ubuntu так популярна.
    Или если освоили ArchLinux - то построили себе совершенно убогое окружение по готовым мануалам.

    Чтобы действительно набрать скиллы ручной настройки Linux - нужно огромное количество упроства и времени, чем ваши друзья, которые вас троллят, вряд ли обладают.

    На деле 99% твердящих о гибкости Linux - далее чем ставить Apache и MySQL из пакетов - ничего сами и не умеют. Фактически работая в то же настроенной другими людьми десктопной среде. Но разве вы не умеете делать то же самое под Windows?

    Другое дело, что разворачивать и тестировать нужно под аутентичным операционным окружением.
    Неважно под Ubuntu ты сидишь или под Windows.

    Лучшие практики советуют использовать полностью изолированный и независимый от рабочего места разработчика инструментарий - виртуальные машины, Vagrant, Docker, отдельные физические сервера.

    В этом случае под твоей любимой ОС работает только текстовый да графический редактор. А все развертывание для тестирования и для продакшн проводится в совсем другой среде.

    Используя Docker хоть под Windows ты будешь получать даже больше преимущество повторяемости рабочей среды чем тем кругом, кто советуют тебе просто перейти на Linux. Если на более слабом железе это и было бы существенно (Docker под Linux стартует быстрее), то на твоем - несущественно на чем работать.
    Ответ написан
    9 комментариев
  • В чем преимущества *nix, linux перед windows (для веб разработчика)?

    DevMan
    @DevMan
    1. вы получаете окружение близкое или идентичное к продакшену.
    2. вы получаете внятную консоль/шел из коробки.
    3. вы избавляетесь от массы вопросов типа "на локалке все работает, а залил на сервер и получил жопу" (или наоборот).
    4. у вас появляется более лучшее понимание как на сервере все работает.

    при теперешнем развитие технологий и производительности железа, нет необходимости себя ломать.
    можно попробовать в виртуалке (docker/vagrant)/дуалбуте и самому для себя решить стоит или нет.
    Ответ написан
    17 комментариев