Toucher les objets Python d'Elixir

ErlPort vous permet de travailler avec le code Python et Ruby d'Elixir.

Cependant, il n'y avait aucune description de la classe dans Documentation, donc je l'ai essayé.

Dès la conclusion, c'est un peu contre-intuitif.

Préparation

$ mix new python

python/mix.exs


defmodule Python.Mixfile do
  # ...

  defp deps do
    [
      {:erlport, github: "hdima/erlport"}
    ]
  end
end

python/sample.py


class Sample(object):
    def __init__(self):
        print("Sample.__init__")
        self.message = "Hello, world!"

    def print_message(self):
        print(self.message)

    def set_message(self, msg):
        self.message = msg

Courir

Démarrez le processus python avec : python.start () et appelez la fonction avec : python.call ().

$ iex -S mix
iex(7)> {:ok, python} = :python.start([python_path: '.'])
iex(8)> obj = python |> :python.call(:sample, :Sample, [])
Sample.__init__
iex(9)> python  |> :python.call(:sample, :"Sample.print_message", [obj])
Hello, world!

Il n'y a pas de problème pour l'instant. Ensuite, essayez d'appeler Sample.set_message ().

iex(13)> python |> :python.call(:sample, :"Sample.set_message", [obj, "Hello, ErlPort!"])
iex(14)> python  |> :python.call(:sample, :"Sample.print_message", [obj])
Hello, world!

cette? Le message n'a pas changé.

Si vous essayez de renvoyer self avec` Sample.set_message () ʻet laissez l'appelant le recevoir,

python/sample.py


class Sample(object):
    # ...

    def set_message(self, msg):
        self.message = msg
        return self
iex(15)> {:ok, python} = :python.start([python_path: '.'])
iex(16)> obj = python |> :python.call(:sample, :Sample, [])
Sample.__init__
iex(18)> obj = python |> :python.call(:sample, :"Sample.set_message", [obj, "Hello, ErlPort!"])
iex(19)> python  |> :python.call(:sample, :"Sample.print_message", [obj])
Hello, ErlPort!
:undefined

Cette fois, le message a changé. Il se comporte comme si «self» était un objet immuable.

Recommended Posts

Toucher les objets Python d'Elixir
Touchez MySQL depuis Python 3
Comment générer un objet Python à partir de JSON
Créer un objet datetime à partir d'une chaîne en Python (Python 3.3)
python / Créer un dict à partir d'une liste.
# 5 [python3] Extraire des caractères d'une chaîne de caractères
Créer un fichier deb à partir d'un package python
Générer une classe à partir d'une chaîne en Python
Utiliser Django à partir d'un script Python local
Manipuler des tables BigQuery à partir d'un client Python
Appeler des commandes depuis Python (édition Windows)
Exploitez le stockage d'objets cloud de Sakura à partir de Python
Explication API pour toucher mastodonte de python
Objet intégré Python
sql à sql
Objet intégré Python
MeCab de Python
Modifier Excel à partir de Python pour créer un tableau croisé dynamique
Comment ouvrir un navigateur Web à partir de python
Comment créer un objet fonction à partir d'une chaîne
Créer un tableau C à partir d'une feuille Python> Excel
Un mémorandum sur l'appel de Python à partir de Common Lisp
Créer une nouvelle tâche Todoist à partir d'un script Python
"Kit Python" qui appelle des scripts Python depuis Swift
Créer un arbre de décision à partir de 0 avec Python (1. Présentation)
Appel de scripts Python à partir de Python intégré en C ++ / C ++
Exécutez des fichiers Python à partir de HTML en utilisant Django
Lire ligne par ligne à partir d'un fichier avec Python
Exécutez des scripts Python à partir d'Excel (en utilisant xlwings)
Insérer un objet dans une chaîne en Python
Extraire des données d'une page Web avec Python
Algorithme A * (édition Python)
Lecture de données CSV à partir du code Python de stockage d'objets DSX
[Python] Prenez une capture d'écran
Exploitez Filemaker depuis Python
Utiliser fluentd de python
Créer un module Python
Accéder à bitcoind depuis python
Changements de Python 3.0 à Python 3.5
Changements de Python 2 à Python 3.0
Faire une copie d'un fichier Google Drive à partir de Python
Recevez des données de dictionnaire à partir de programmes Python avec AppleScript
expression lambda de python ...
Python depuis ou import
Utilisez MySQL depuis Python
J'ai essayé d'exécuter python à partir d'un fichier chauve-souris
Exécutez Python à partir d'Excel
Installer Python à partir de la source
Exécuter des commandes depuis Python
[ev3dev × Python] Capteur tactile
Points Python du point de vue d'un programmeur en langage C
Python débutant touche Pytorch (3)
Démoniser un processus Python
Il ne reste rien après avoir fait une liste d'un objet de carte python
Faites fonctionner le neutron de Python!
D'un livre que les programmeurs peuvent apprendre ... (Python): Pointer
Étapes de l'installation de Python 3 à la création d'une application Django