Unterfunktionen Python (js)

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
Hypec
User
Beiträge: 183
Registriert: Mittwoch 1. August 2018, 16:11

Hallo,
ich wollte fragen ob so etwas hier auch in Python möglich ist wenn ja wie? Das ganze ist Javascript mit P5 und wird in JS über test.add(5) aufgerufen. Funktioniert so etwas ähnliches auch in Python. Wenn ja wie heißt das ganze und wenn es so etwas nicht geben sollte wie kann ich das anderst lösen?

Code: Alles auswählen

function test() {
this.testvar = 5;
}

test.prototype.add = function(n) {
this.testvar += n;
}
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das ist Objektorientierung in JS, und eine Klasse ist alles was du dazu brauchst.

Code: Alles auswählen

class Test:
     def __init__(self):
           self.testvar = 5

     def add(self, n):
           self.testvar += n
Benutzeravatar
__blackjack__
User
Beiträge: 13080
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Hypec: Dein JavaScript funktioniert so nicht weil es `test.add()` nicht gibt – oder Du zeigst da etwas entscheidendes nicht. Und das ist mittlerweile auch veraltet prototypbasierte Objekte zu erstellen. JavaScript hat mittlerweile auch ein ``class``-Schlüsselwort, beziehungsweise hat das mittlerweile eine Bedeutung und ist nicht einfach nur reserviert. In JavaScript würde das so aussehen:

Code: Alles auswählen

class Test {
  constructor() {
    this.testvar = 5;
  }
  
  add(n) {
    this.testvar += n;
  }
}
Das sieht dem Python-Code doch recht ähnlich.

Das ist übrigens auch keine Unterfunktion sondern eine Methode – egal ob man das nun prototypbasiert oder mit ``class`` macht. P5 hat mit der ganzen Sache auch nichts zu tun.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Hypec
User
Beiträge: 183
Registriert: Mittwoch 1. August 2018, 16:11

__blackjack__ hat geschrieben: Dienstag 26. März 2019, 19:45 Dein JavaScript funktioniert so nicht weil es `test.add()` nicht gibt
Stimmt du hast recht ich hab einen Teil vergessen den ich sonst über die console Eingebe. Aber danke für eure Hilfe es hat so geklappt.
Antworten