PyObjC
Эта статья нуждается в дополнительных цитатах для проверки . ( ноябрь 2014 г. ) |
Оригинальный автор(ы) | Леле Гаифакс |
---|---|
Разработчик(и) | Рональд Уссорен, Билл Бамгарнер, Стив Маевски и др. |
Первоначальный выпуск | сентябрь 1996 г |
Стабильная версия | 5.2
/ 3 апреля 2019 г [ 1 ] |
Репозиторий | |
Написано в | Питон |
Операционная система | Кросс-платформенный |
Лицензия | МОЯ лицензия |
Веб-сайт | pyobjc |
PyObjC — это двунаправленный мост между языками программирования Python и Objective-C , позволяющий программистам использовать и расширять существующие библиотеки , такие как Apple платформа Cocoa Objective- C , с помощью Python.
PyObjC используется для разработки приложений macOS на чистом Python.
Также ограничена поддержка GNUstep , кроссплатформенной реализации Cocoa с открытым исходным кодом.
Для программистов Python
[ редактировать ]Наиболее важным применением PyObjC является предоставление программистам возможности создавать приложения с графическим интерфейсом с использованием библиотек Cocoa на чистом Python. [ 2 ] Более того, благодаря тесной связи Objective-C с языком программирования C (это чистая расширенная версия), разработчики также могут включать любой API на основе C , обертывая его оболочкой Objective-C, а затем используя завернутый код. через мост PyObjC. Используя Objective-C++ , то же самое можно сделать и с библиотеками C++ .
Для программистов Objective-C
[ редактировать ]Разработчики Cocoa также могут получить выгоду, поскольку задачи, написанные на Python, обычно занимают меньше строк, чем эквивалент Objective-C. Это можно использовать в своих интересах, поскольку позволяет ускорить создание прототипов.
История
[ редактировать ]Истоки PyObjC восходят к 1996 году, когда Леле Гаифакс создал оригинальный модуль в сентябре того же года. [ 3 ] Среди признанных авторов был Гвидо ван Россум, создатель языка программирования Python.
PyObjC был переписан в 2002 году. Среди заметных дополнений можно отметить возможность прямого создания подклассов классов Objective-C из Python и почти полную поддержку фреймворков Foundation, App Kit и Адресной книги.
Позже в том же году была добавлена поддержка сборок Python без платформы, а также последующая поддержка дистрибутива Python, включенного в Mac OS X. Наряду с этими изменениями появились шаблоны проектов для автономных приложений Cocoa для использования с Project Builder , предшественником текущей платформы Apple IDE , Xcode .
Apple включила PyObjC в Mac OS X в 2007 году, выпустив Mac OS X 10.5 Leopard . [ 4 ]
Сообщения и методы
[ редактировать ]В Objective-C объекты взаимодействуют друг с другом посредством отправки сообщений, что аналогично вызовам методов в других объектно-ориентированных языках. Когда объект получает сообщение, он ищет имя сообщения или селектор и сопоставляет его с методом, назначенным тем же селектором, который затем вызывает.
Синтаксис этих выражений сообщений унаследован от Smalltalk и выглядит как объект, называемый получателем, расположенный слева от имени сообщения или селектора, и оба они заключены в пару квадратных скобок (синтаксис квадратных скобок). не наследуется от Smalltalk). Двоеточия внутри селектора указывают, что он принимает один или несколько аргументов, по одному на каждое двоеточие. Предназначенные для улучшения читаемости кода, двоеточия размещаются внутри селектора таким образом, что при наличии обязательных аргументов цель выражения становится однозначной:
[myLittleDuck makeSomeNoise:quack eyesClosed:@YES onOneFoot:@YES];
Это отличается от синтаксиса, используемого в Python и во многих других языках, где эквивалентное выражение будет выглядеть следующим образом:
myLittleDuck.makeSomeNoise_eyesClosed_onOneFoot_(quack, True, True)
Перевод селекторов Objective-C в имена методов Python осуществляется путем замены каждого двоеточия одним подчеркиванием и перечисления аргументов в паре круглых скобок в конце, как показано выше.
Классы
[ редактировать ]Классы Objective-C подразделяются на подклассы так же, как и обычный класс Python:
class MyDuck(NSObject): # NSObject is a base Objective-C class.
def init(self):
self = super(MyDuck, self).init() # An Objective-C idiom, wherein the
# subclass instance, self, is instantiated
# by sending the superclass its
# designated initializer.
return self
myLittleDuckOne = MyDuck.alloc().init()
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ "pyobjc" . Индекс пакетов Python . Проверено 21 апреля 2019 г.
- ^ «Введение в PyObjC» . Проверено 05 августа 2018 г.
- ^ «PyObjC ИСТОРИЧЕСКИЙ.txt» . 12 октября 2002 г. Проверено 29 сентября 2017 г.
- ^ «PyObjC downloads.rst» . Проверено 29 сентября 2017 г.