Jump to content

PyObjC

PyObjC
Оригинальный автор(ы) Леле Гаифакс
Разработчик(и) Рональд Уссорен, Билл Бамгарнер, Стив Маевски и др.
Первоначальный выпуск сентябрь 1996 г .; 27 лет назад ( 1996-09 )
Стабильная версия
5.2 / 3 апреля 2019 г .; 5 лет назад ( 03.04.2019 ) [ 1 ]
Репозиторий
Написано в Питон
Операционная система Кросс-платформенный
Лицензия МОЯ лицензия
Веб-сайт pyobjc .readthedocs .что /последний /

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()

См. также

[ редактировать ]
  1. ^ "pyobjc" . Индекс пакетов Python . Проверено 21 апреля 2019 г.
  2. ^ «Введение в PyObjC» . Проверено 05 августа 2018 г.
  3. ^ «PyObjC ИСТОРИЧЕСКИЙ.txt» . 12 октября 2002 г. Проверено 29 сентября 2017 г.
  4. ^ «PyObjC downloads.rst» . Проверено 29 сентября 2017 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 301300dd30a59c808b6bc57b56b56f15__1637812440
URL1:https://arc.ask3.ru/arc/aa/30/15/301300dd30a59c808b6bc57b56b56f15.html
Заголовок, (Title) документа по адресу, URL1:
PyObjC - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)