PyObjC - PyObjC

PyObjC
Оригинальный автор (ы)Леле Гайфакс
Разработчики)Рональд Уссорен, Билл Бумгарнер, Стив Маевски и др.
изначальный выпускСентябрь 1996; 24 года назад (1996-09)
Стабильный выпуск
5.2 / 3 апреля 2019 г.; 20 месяцев назад (2019-04-03)[1]
Репозиторий Отредактируйте это в Викиданных
Написано вPython
Операционная системаКроссплатформенность
ЛицензияЛицензия MIT
Интернет сайтPyobjc.readthedocs.io/ en/последний/

PyObjC двунаправленный мост между Python и Цель-C языки программирования, позволяющие программистам использовать и расширять существующий Objective-C библиотеки, такие как яблоко с Какао фреймворк, используя Python.

PyObjC используется для разработки macOS приложения на чистом Python.

Также имеется ограниченная поддержка GNUstep, открытый исходный код, кроссплатформенный реализация какао.

Для программистов на Python

Наиболее важное использование PyObjC - это предоставление программистам возможности создавать GUI приложения, использующие библиотеки Какао на чистом Python.[2] Более того, в результате тесных отношений Objective-C с C язык программирования (это чистый надмножество), разработчики также могут включать любой язык на основе C API от завернуть это с оболочкой Objective-C, а затем с использованием обернутого кода через мост PyObjC. С помощью Цель-C ++, то же самое можно сделать с C ++ библиотеки.

Для программистов на Objective-C

Разработчики какао также могут получить выгоду, поскольку задачи, написанные на Python, обычно занимают меньше строк, чем эквивалент Objective-C. Это может быть использовано в их интересах, поскольку позволяет быстрее создавать прототипы.

История

Истоки PyObjC восходят к 1996 году, когда Леле Гайфакс построил оригинальный модуль в сентябре того же года.[3] Среди заслуживающих доверия участников был Гвидо ван Россум, создатель языка программирования Python.

PyObjC был переписан в 2002 году. Среди заметных дополнений - возможность прямого подкласса классов Objective-C из Python и почти полная поддержка фреймворков Foundation, App Kit и Address Book.

Позже в том же году была добавлена ​​поддержка сборок Python без фреймворка, а также последующая поддержка дистрибутива Python, включенного в Mac OS X. Вместе с этими изменениями появились шаблоны проектов для автономных приложений Какао для использования с Конструктор проектов, предшественник текущей платформы Apple IDE, Xcode.

Apple включила PyObjC в Mac OS X в 2007 году, выпустив Mac OS X 10.5 Leopard.[4]

Сообщения и методы

В Objective-C объекты взаимодействуют друг с другом, отправляя сообщения, что аналогично вызовам методов в других объектно-ориентированных языках. Когда объект получает сообщение, он ищет имя сообщения или селектор и сопоставляет его с методом, назначенным тем же селектором, который затем вызывает.

Синтаксис этих выражений сообщений унаследован от Smalltalk и отображается как объект, называемый получателем, помещенный слева от имени сообщения или селектора, и оба они заключены в пару квадратных скобок (синтаксис квадратных скобок не унаследован от Smalltalk). Двоеточие в селекторе означает, что он принимает один или несколько аргументов, по одному для каждого двоеточия. Предназначенные для улучшения читаемости кода, двоеточия помещаются в селектор таким образом, чтобы при наличии необходимых аргументов цель выражения была однозначной:

   [myLittleDuck makeSomeNoise:крякать глаза закрыты:@ДА onOneFoot:@ДА];

Это отличается от синтаксиса, используемого в Python и во многих других языках, где эквивалентное выражение читалось бы:

    myLittleDuck.makeSomeNoise_eyesClosed_onOneFoot_(крякать, Правда, Правда)

Преобразование селекторов Objective-C в имена методов Python выполняется путем замены каждого двоеточия одним подчеркиванием и перечисления аргументов в паре круглых скобок в конце, как показано выше.

Классы

Классы Objective-C делятся на подклассы так же, как и обычный класс Python:

класс MyDuck(NSObject):                   # NSObject - это базовый класс Objective-C.    def в этом(я):        я = супер(MyDuck, я).в этом() # Идиома Objective-C, в которой                                          # экземпляр подкласса, self, создается                                          # отправив суперклассу его                                          # назначенный инициализатор.        вернуть яmyLittleDuckOne = MyDuck.выделить().в этом()

Смотрите также

использованная литература

  1. ^ "pyobjc". Индекс пакета Python. Получено 2019-04-21.
  2. ^ «Введение в PyObjC». Получено 2018-08-05.
  3. ^ "PyObjC HISTORIC.txt". 2002-10-12. Получено 2017-09-29.
  4. ^ "PyObjC downloads.rst". Получено 2017-09-29.

внешние ссылки