PyObjC - PyObjC

PyObjC
Autor (es) original (is) Lele Gaifax
Desenvolvedor (s) Ronald Oussoren, Bill Bumgarner, Steve Majewski, et al.
lançamento inicial Setembro de 1996 ; 24 anos atras ( 1996-09 )
Versão estável
5.2 / 3 de abril de 2019 ; 17 meses atrás ( 03/04/2019 )
Repositório Edite isso no Wikidata
Escrito em Pitão
Sistema operacional Plataforma cruzada
Licença Licença MIT
Local na rede Internet pyobjc .readthedocs .io / en / mais recente /

PyObjC é uma ponte bidirecional entre o Python e Objective-C linguagens de programação, permitindo que programadores de usar e estender Objective-C existentes bibliotecas , como a Apple 's Cacau quadro , usando Python.

PyObjC é usado para desenvolver aplicativos macOS em Python puro.

Também há suporte limitado para GNUstep , uma implementação de plataforma cruzada de código aberto do Cocoa.

Para programadores Python

O uso mais importante do PyObjC é permitir que os programadores criem aplicativos GUI usando bibliotecas Cocoa em Python puro. Além disso, como um efeito da estreita relação de Objective-C com o C linguagem de programação (isto é um super-puro), promotores também são capazes de incorporar qualquer baseado em C API por envolvê-lo com um invólucro Objectivo-C e, em seguida, usando o código envolto sobre a ponte PyObjC. Usando Objective-C ++ , o mesmo pode ser feito com bibliotecas C ++ .

Para programadores Objective-C

Os desenvolvedores de Cocoa também podem se beneficiar, pois as tarefas escritas em Python geralmente levam menos linhas do que o equivalente em Objective-C. Isso pode ser usado a seu favor, pois permite uma prototipagem mais rápida.

História

As origens do PyObjC remontam a 1996, quando Lele Gaifax construiu o módulo original em setembro daquele ano. Entre os contribuintes creditados estava Guido van Rossum, criador da linguagem de programação Python.

PyObjC foi reescrito em 2002. Adições notáveis ​​incluem a capacidade de criar subclasses diretas de classes Objective-C do Python e suporte quase completo para os frameworks Foundation, App Kit e Address Book.

Mais tarde no mesmo ano, foi adicionado suporte para a não-framework Python constrói, bem como o apoio posterior para a distribuição Python incluído no Mac OS X . Junto com essas mudanças, vieram os modelos de projeto para aplicativos Cocoa autônomos para uso com o Project Builder , o predecessor da atual plataforma IDE da Apple , Xcode .

A Apple incorporou o PyObjC ao Mac OS X em 2007, com o lançamento do Mac OS X 10.5 Leopard .

Mensagens e métodos

Em Objective-C, os objetos se comunicam enviando mensagens, o que é análogo às chamadas de método em outras linguagens orientadas a objetos. Quando um objeto recebe uma mensagem, ele procura o nome da mensagem, ou seletor, e o combina com um método designado com o mesmo seletor, que ele então chama.

A sintaxe para essas expressões de mensagem é herdada de Smalltalk e aparece como um objeto, chamado de receptor, colocado à esquerda do nome da mensagem, ou seletor, e ambos são colocados entre um par de colchetes (a sintaxe do colchete não é herdado de Smalltalk). Os dois pontos em um seletor indicam que ele aceita um ou mais argumentos, um para cada dois pontos. Com a intenção de melhorar a legibilidade do código, dois pontos são colocados no seletor de forma que, quando os argumentos necessários estiverem no lugar, a intenção da expressão seja inequívoca:

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

Isso é diferente da sintaxe usada em Python e em muitas outras linguagens, em que uma expressão equivalente seria:

    myLittleDuck.makeSomeNoise_eyesClosed_onOneFoot_(quack, True, True)

A tradução de seletores Objective-C para nomes de métodos Python é realizada substituindo cada dois-pontos por um único sublinhado e listando os argumentos dentro de um par de parênteses no final, conforme demonstrado acima.

Aulas

As classes Objective-C são divididas em subclasses da mesma maneira que uma classe normal do 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()

Veja também

Referências

links externos