Gibt es ein Äquivalent zur Java-Reflexion in Python?

Beste Antwort

In Java und C # können Sie mit Reflektion eine Klasse oder Instanz abfragen, um die Eigenschaften beim Ausführen abzurufen Zeit. Der Begriff, den sie in Python verwenden, ist „Selbstbeobachtung“. Weitere Informationen finden Sie im Handbuch zur Python-Introspektion .

Sie können Folgendes tun:

#define a class

class Foo:

def bar(self):

return 123

#get the list of methodsmethodNames = filter(lambda x: not x.startswith("\_"), dir(foo.\_\_class\_\_))

#call the first method

getattr(foo, methodNames[0])()

Python ist jedoch nicht streng typisiert, so dass es nicht wirklich eine Vorstellung von selbstbeschreibenden Typen gibt. Das bedeutet, dass einige der Dinge, für die wir normalerweise Reflektion verwenden (Entitätsmodelle, benutzerdefinierte Serialisierung wie JsonConvert, einige IoC-Muster und allgemeine aspektorientierte Tricks), nicht besonders gut übersetzt werden können. Soweit ich gesehen habe, scheint die Python-Introspektion hauptsächlich dafür verwendet zu werden automatisch generierte Hilfe.

Sie können einige Dinge mit Codierungskonventionen tun, aber der Compiler wird nicht in der Lage sein, Dinge zu erzwingen, die Sie vielleicht erwarten. „Thinking Python“ ist etwas gewöhnungsbedürftig und die Sprache macht Kompromisse, die ein wenig beunruhigend sind, wenn Sie aus einem strengen Typ-Hintergrund stammen. Ein Teil des Spaßes besteht darin, dass Sie mehr Zeit für die Codierung von Code und weniger Zeit für die Codierung von Frameworks aufwenden müssen. Es ist nur ein wenig gewöhnungsbedürftig.

Antwort

Python.

Denken Sie nicht einmal darüber nach, eine andere Sprache als Ihre erste auszuwählen. Warum? Nun,

  • Python ist einfach. Vertrau mir in diesem Fall. Meine erste Hauptsprache war C ++ und es brachte mich dazu, über einen Karrierewechsel nachzudenken. Hier ist ein kurzer Ausschnitt aus C ++ – Code zum Anzeigen von „Hallo Welt“ auf dem Bildschirm –

#include

int main() {

std::cout

return 0;

}

Hier ist dasselbe in Python

print("Hello world!")

  • Python wird dynamisch eingegeben. Was in aller Welt ist das? Okay, Computer sind dumm. Sie sind nicht klug genug zu wissen, dass 1 eine Zahl oder speziell eine Ganzzahl ist und dass „Hallo“ ein Wort oder eine Zeichenfolge im Computergespräch ist. Aus diesem Grund mussten einige Programmiersprachen angeben, mit welchen Dingen sie arbeiteten. Wenn Sie beispielsweise in Java zwei Zahlen hinzufügen müssen, müssen Sie Folgendes tun:

class AddNums(){

public static void main(String args[]){

int first = 1;

int second = 2;

int sum = first + second;

System.out.println(sum);

}

}

Sie sehen das Schlüsselwort „int“? Das steht für „Ganzzahl“ und sagt dem Computer im Grunde nur: „Hey, ich brauche etwas, um diese Nummer zu speichern, aber da Sie zu dumm sind, um zu wissen, dass es eine Nummer ist, habe ich sie angegeben, und deshalb sollten Sie sich daran erinnern, dass die Variable „first“ genannt kann nur ganzzahlige Werte speichern und ich habe ihm den Wert 1 gegeben. Und so weiter mit „second“ und „sum“. Genau das ist mit Java los. In Python?

first = 1

second = 2

sum = first + second

print(sum)

Sehen Sie, wie sauber das ist? Beachten Sie das ruhige Fehlen von Semikolons.

  • Python unterstützt alle Programmierstile. Okay, das mag ein wenig kontrovers sein, aber es ist immer noch erwähnenswert. Grundsätzlich gibt es zwei Methoden (kein Wortspiel beabsichtigt) der Programmierung – objektorientiert und prozedural. Ich werde nicht auf Details eingehen, aber kurz gesagt, beide sind großartige Möglichkeiten, um Probleme anzugehen, aber objektorientiert ist besser für Großprojekte geeignet und wird, wenn es richtig gemacht wird (eine große Sache an sich), sauberer sein . Das Verfahren ist besser für kleine Projekte, um Dinge einfach zu erledigen. Zum Beispiel –

class Hello{

public static void main(String args[]){

System.out.println("Hello world!");

}

}

vs

def main():

print("Hello world!")

main()

  • Jetzt unterstützen sowohl Python als auch Java OOP (objektorientierte Programmierung), aber Java zwingt es Ihnen auf, indem es Ihnen keine andere gibt Ausweg. Für große Unternehmen und Großprojekte mag dies eine gute Sache sein, aber für jemanden, der nicht einmal weiß, was eine -Klasse ist, kann dies ein großer Aufwand sein. Mit Python hingegen können Sie Ihr eigenes Ding machen. Auch dies mag eine schlechte Sache sein, aber alles hängt von der Art der Praktiken ab, die Sie lernen und befolgen. Ruby ist eine andere Sprache und sehr ähnlich wie Python, aber ich mag es nicht so sehr, weil es für Programmierer milder ist. Python behält diese feine Linie bei.Aber ja, für einen Anfänger könnte sich Object Oriented gezwungen fühlen, wenn Sie nur etwas schreiben müssen, um zwei Zahlen aufzunehmen und ihre Summe zu drucken, aber in der langen, wirklich langen run, es könnte eine gute Sache sein.
  • Python wird fast überall verwendet. Web Entwicklung? Prüfen. Penetrationstests? Prüfen. Tolle Spiele machen? Prüfen. Klebercode für Projekte, die nicht in Python geschrieben wurden? Prüfen. Maching Learning? Überprüfe den Jungen noch einmal! Wissenschaftliche Forschung? Prüfen. Akademiker? Prüfen. Android Apps und andere skalierbare Projekte…? Java ist dein Ding. Native Programmierung ist ein Ort, an dem Python fehlschlägt.

Und ich denke, das ist es auch. Beide Sprachen sind großartig in ihrer eigenen Sache und wofür sie verwendet werden, aber Python ist zweifellos eines der besten Dinge, mit denen ein Anfänger heute beginnen kann.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.