PyObjC - PyObjC

PyObjC
Oorspronkelijke auteur (s) Lele Gaifax
Ontwikkelaar (s) Ronald Oussoren, Bill Bumgarner, Steve Majewski, et al.
Eerste uitgave September 1996 ; 24 jaar geleden ( 1996-09 )
Stabiele vrijlating
5,2 / 3 april 2019 ; 17 maanden geleden ( 2019-04-03 )
Opslagplaats Bewerk dit op Wikidata
Geschreven in Python
Besturingssysteem Cross-platform
Licentie MIT-licentie
Website pyobjc .readthedocs .io / en / nieuwste /

PyObjC is een bidirectionele brug tussen de programmeertalen Python en Objective-C , waardoor programmeurs bestaande Objective-C- bibliotheken , zoals Apple 's Cocoa- framework , kunnen gebruiken en uitbreiden met Python.

PyObjC wordt gebruikt om macOS- applicaties in pure Python te ontwikkelen .

Er is ook beperkte ondersteuning voor GNUstep , een open source, platformonafhankelijke implementatie van Cocoa.

Voor Python-programmeurs

Het belangrijkste gebruik van PyObjC is om programmeurs in staat te stellen GUI- applicaties te maken met behulp van Cocoa-bibliotheken in pure Python. Bovendien, als gevolg van Objective-C's nauwe relatie met de C- programmeertaal (het is een pure superset), kunnen ontwikkelaars ook elke C-gebaseerde API opnemen door deze in een Objective-C-wrapper te wikkelen en vervolgens de ingepakte code te gebruiken over de PyObjC-brug. Met Objective-C ++ kan hetzelfde worden gedaan met C ++ -bibliotheken.

Voor Objective-C programmeurs

Cacao-ontwikkelaars kunnen ook profiteren, aangezien taken die in Python zijn geschreven over het algemeen minder regels in beslag nemen dan het equivalent van Objective-C. Dit kan in hun voordeel worden gebruikt omdat het snellere prototyping mogelijk maakt.

Geschiedenis

De oorsprong van PyObjC gaat terug tot 1996, toen Lele Gaifax de originele module in september van dat jaar bouwde. Onder de gecrediteerde bijdragers was Guido van Rossum, de maker van de programmeertaal Python.

PyObjC werd herschreven in 2002. Opmerkelijke toevoegingen zijn onder meer de mogelijkheid om Objective-C-klassen direct vanuit Python te subclassen en bijna volledige ondersteuning voor de Foundation, App Kit en Address Book frameworks.

Later dat jaar werd ondersteuning toegevoegd voor niet-framework Python-builds, evenals latere ondersteuning voor de Python-distributie die bij Mac OS X wordt geleverd . Samen met deze veranderingen kwamen er projectsjablonen voor zelfstandige Cocoa-applicaties voor gebruik met Project Builder , de voorganger van het huidige Apple-platform IDE , Xcode .

Apple heeft PyObjC in 2007 opgenomen in Mac OS X, met de release van Mac OS X 10.5 Leopard .

Berichten en methoden

In Objective-C communiceren objecten met elkaar door berichten te verzenden, wat analoog is aan methodeaanroepen in andere objectgeoriënteerde talen. Wanneer een object een bericht ontvangt, zoekt het de naam van het bericht op, of selector, en vergelijkt het met een methode die is aangeduid met dezelfde selector, die het vervolgens aanroept.

De syntaxis voor deze berichtuitdrukkingen is overgenomen van Smalltalk en verschijnt als een object, de ontvanger genaamd, links van de naam van het bericht of selector geplaatst, en beide zijn tussen een paar vierkante haken geplaatst (de syntaxis van vierkante haken). is niet overgenomen van Smalltalk). Dubbele punten binnen een selector geven aan dat deze een of meer argumenten accepteert, één voor elke dubbele punt. Bedoeld om de leesbaarheid van de code te verbeteren, worden dubbele punten in de selector geplaatst, zodat wanneer de vereiste argumenten aanwezig zijn, de bedoeling van de uitdrukking ondubbelzinnig is:

   [myLittleDuck makeSomeNoise:quack eyesClosed:@YES onOneFoot:@YES];

Dit verschilt van de syntaxis die wordt gebruikt in Python, en in veel andere talen, waar een equivalente uitdrukking zou zijn:

    myLittleDuck.makeSomeNoise_eyesClosed_onOneFoot_(quack, True, True)

Het vertalen van Objective-C-selectors naar namen van Python-methoden wordt bereikt door elke dubbele punt te vervangen door een enkel onderstrepingsteken en de argumenten tussen haakjes aan het einde op te sommen, zoals hierboven aangetoond.

Klassen

Objective-C-klassen worden op dezelfde manier onderverdeeld als een normale Python-klasse:

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

Zie ook

Referenties

Externe links