PyObjC
Originalförfattare | Lele Gaifax |
---|---|
Utvecklare | Ronald Oussoren, Bill Bumgarner, Steve Majewski, et al. |
Initial release | september 1996 |
Stabil frisättning | 5.2 / 3 april 2019
|
Förvar | |
Skrivet i | Pytonorm |
Operativ system | Cross-platform |
Licens | MIT-licens |
Hemsida |
PyObjC är en dubbelriktad brygga mellan programmeringsspråken Python och Objective-C , vilket gör att programmerare kan använda och utöka befintliga Objective-C -bibliotek , såsom Apples Cocoa - ramverk , med Python .
PyObjC används för att utveckla macOS -applikationer i ren Python.
Det finns också begränsat stöd för GNUstep , en öppen källkod, plattformsoberoende implementering av Cocoa.
För Python-programmerare
Den viktigaste användningen av PyObjC är att göra det möjligt för programmerare att skapa GUI- applikationer med hjälp av Cocoa-bibliotek i ren Python. Dessutom, som en effekt av Objective-C:s nära relation med C (det är en ren superset), kan utvecklare också införliva vilket C-baserat API som helst genom att linda in det med ett Objective-C-omslag och sedan använda den inslagna koden över PyObjC-bron. Med Objective-C++ kan samma sak göras med C++ -bibliotek.
För Objective-C-programmerare
Kakaoutvecklare kan också gynnas, eftersom uppgifter skrivna i Python i allmänhet tar färre rader än motsvarigheten till Objective-C. Detta kan användas till deras fördel eftersom det möjliggör snabbare prototypframställning.
Historia
PyObjC:s ursprung går tillbaka till 1996, när Lele Gaifax byggde den ursprungliga modulen i september samma år. Bland de krediterade bidragsgivarna var Guido van Rossum, skapare av programmeringsspråket Python.
PyObjC skrevs om 2002. Anmärkningsvärda tillägg inkluderar möjligheten att direkt underklassa Objective-C-klasser från Python och nästan fullständigt stöd för ramarna för Foundation, App Kit och Adressbok.
Senare samma år lades stöd till för Python-byggen utan ramverk, samt efterföljande stöd för Python-distributionen som ingår i Mac OS X . Tillsammans med dessa förändringar kom projektmallar för fristående Cocoa-applikationer för användning med Project Builder , föregångaren till den nuvarande Apple-plattformen IDE , Xcode .
Apple införlivade PyObjC i Mac OS X 2007, med lanseringen av Mac OS X 10.5 Leopard .
Meddelanden och metoder
I Objective-C kommunicerar objekt med varandra genom att skicka meddelanden, vilket är analogt med metodanrop på andra objektorienterade språk. När ett objekt tar emot ett meddelande, letar det upp meddelandets namn, eller väljare, och matchar det med en metod som betecknas samma väljare, som det sedan anropar.
Syntaxen för dessa meddelandeuttryck ärvs från Smalltalk och visas som ett objekt, kallat mottagaren, placerat till vänster om meddelandets namn, eller väljaren, och båda omges av ett par hakparenteser (syntaxen för hakparenteser) ärvs inte från Smalltalk). Kolon i en väljare indikerar att den accepterar ett eller flera argument, ett för varje kolon. Avsedd att förbättra kodläsbarheten placeras kolon i väljaren så att när de nödvändiga argumenten finns på plats är uttryckets avsikt entydig:
[ myLittleDuck makeSomeNoise : kvacksalvare ögonStängda : @YES onOneFoot : @YES ];
Detta skiljer sig från syntaxen som används i Python och på många andra språk, där ett motsvarande uttryck skulle lyda:
myLittleDuck . makeSomeNoise_eyesClosed_onOneFoot_ ( kvack , True , True )
Att översätta Objective-C-väljare till Python-metodnamn görs genom att ersätta varje kolon med ett enda understreck och lista argumenten inom ett par parenteser i slutet, som visas ovan.
Klasser
Objective-C-klasser är underklassade på samma sätt som en normal Python-klass:
klass MyDuck ( NSObject ): # NSObject är en bas Objective-C-klass. def init ( själv ): själv = super ( MyDuck , jag ) . init () # En Objective-C formspråk, där # underklassinstansen, self, instansieras # genom att skicka superklassen dess # designade initializer. returnera själv myLittleDuckOne = MyDuck . alloc () . init ()