Berühren Sie Python-Objekte in Elixir

Mit ErlPort können Sie mit Python- und Ruby-Code von Elixir arbeiten.

Es gab jedoch keine Beschreibung der Klasse in Dokumentation, daher habe ich es tatsächlich versucht.

Aus der Schlussfolgerung ist es ein wenig eingängig.

Vorbereitung

$ 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

Lauf

Starten Sie den Python-Prozess mit : python.start () und rufen Sie die Funktion mit : python.call () auf.

$ 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!

Bisher gibt es kein Problem. Versuchen Sie als nächstes, "Sample.set_message ()" aufzurufen.

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

Das? Die Nachricht hat sich nicht geändert.

Wenn Sie versuchen, "self" mit "Sample.set_message ()" zurückzugeben und den Anrufer empfangen zu lassen,

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

Diesmal hat sich die Nachricht geändert. Es verhält sich so, als wäre "Selbst" ein unveränderliches Objekt.

Recommended Posts

Berühren Sie Python-Objekte in Elixir
Berühren Sie MySQL in Python 3
So generieren Sie ein Python-Objekt aus JSON
Erstellen Sie ein Datum / Uhrzeit-Objekt aus einer Zeichenfolge in Python (Python 3.3).
Python / Machen Sie ein Diktat aus einer Liste.
# 5 [python3] Extrahiert Zeichen aus einer Zeichenfolge
Erstellen Sie eine Deb-Datei aus einem Python-Paket
Generieren Sie eine Klasse aus einer Zeichenfolge in Python
Verwenden Sie Django aus einem lokalen Python-Skript
Bearbeiten Sie BigQuery-Tabellen von einem Python-Client aus
Aufrufbefehle von Python (Windows Edition)
Betreiben Sie den Cloud-Objektspeicher von Sakura von Python aus
API-Erklärung zum Berühren von Mastodon aus Python
Integriertes Python-Objekt
SQL zu SQL
Integriertes Python-Objekt
MeCab von Python
Bearbeiten Sie Excel in Python, um eine Pivot-Tabelle zu erstellen
So öffnen Sie einen Webbrowser über Python
So erstellen Sie ein Funktionsobjekt aus einer Zeichenfolge
Erstellen Sie ein C-Array aus einer Python> Excel-Tabelle
Ein Memorandum zum Aufrufen von Python aus Common Lisp
Erstellen Sie eine neue Todoist-Aufgabe aus Python Script
"Python Kit", das Python-Skripte von Swift aufruft
Erstellen Sie mit Python einen Entscheidungsbaum von 0 (1. Übersicht)
Rufen Sie Python-Skripte aus Embedded Python in C ++ / C ++ auf
Führen Sie Python-Dateien mit Django aus HTML aus
Lesen Sie mit Python Zeile für Zeile aus der Datei
Führen Sie Python-Skripte in Excel aus (mit xlwings).
Fügen Sie ein Objekt in eine Zeichenfolge in Python ein
Extrahieren Sie mit Python Daten von einer Webseite
Ein * Algorithmus (Python Edition)
Lesen von CSV-Daten aus dem Python-Code des DSX-Objektspeichers
[Python] Machen Sie einen Screenshot
Bedienen Sie Filemaker von Python aus
Verwenden Sie fließend Python
Erstellen Sie ein Python-Modul
Greifen Sie über Python auf Bitcoind zu
Änderungen von Python 3.0 zu Python 3.5
Änderungen von Python 2 zu Python 3.0
Erstellen Sie eine Kopie einer Google Drive-Datei aus Python
Empfangen Sie Wörterbuchdaten von Python-Programmen mit AppleScript
Pythons Lambda-Ausdruck ...
Python aus oder importieren
Verwenden Sie MySQL aus Python
Ich habe versucht, Python aus einer Bat-Datei auszuführen
Führen Sie Python aus Excel aus
Installieren Sie Python von der Quelle
Führen Sie Befehle aus Python aus
[ev3dev × Python] Berührungssensor
Python zeigt aus der Perspektive eines C-Sprachprogrammierers
Python-Anfänger berührt Pytorch (3)
Dämonisiere einen Python-Prozess
Nachdem ein Python-Map-Objekt zu einer Liste gemacht wurde, bleibt nichts übrig
Bedienen Sie Neutronen von Python!
Aus einem Buch, das Programmierer lernen können ... (Python): Zeiger
Schritte von der Installation von Python 3 bis zur Erstellung einer Django-App