Er det et ekvivalent med Java-refleksjon i Python?


Beste svaret

I Java og C # lar refleksjon deg kode for å forhøre en klasse eller forekomst for å få egenskapene til å kjøre tid. Begrepet de bruker i Python er «introspeksjon». Se Guide til Python introspeksjon for detaljer.

Du kan gjøre noe sånt som dette:

#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])()

Imidlertid er Python ikke strengt skrevet, så det er egentlig ikke en forestilling om selvbeskrivende typer. Det betyr at noen av tingene vi vanligvis bruker refleksjon til (enhetsmodeller, tilpasset serialisering som JsonConvert, noen IoC-mønstre og generell aspektorientert lureri) ikke oversettes veldig bra. Fra det jeg har sett, virker Python-introspeksjon mest brukt til automatisk generert hjelp.

Du kan gjøre noe ved hjelp av kodekonvensjoner, men kompilatoren vil ikke kunne håndheve ting som du kanskje forventer. «Thinking Python» krever litt å bli vant til, og språket gjør avveininger som er litt foruroligende hvis du kommer fra streng type bakgrunn. En del av moroa er at du får bruke mer tid på koding av kode, og mindre tid på koding av rammer. Det tar bare å bli vant til.

Svar

Python.

Ikke tenk på det en gang for å velge et annet språk som ditt første. Hvorfor? Vel,

  • Python er enkelt. Stol på meg på denne. Mitt første hovedspråk var C ++, og det førte meg til å tenke på en karriereendring. Her er et kort kutt av C ++ – kode for å vise “Hello world” på skjermen –

#include

int main() {

std::cout << "Hello world!" << std::endl;

return 0;

}

Her er det samme i Python

print("Hello world!")

  • Python er dynamisk skrevet. Hva i all verden er det? Ok, så datamaskiner er dumme. De er ikke smarte nok til å vite at 1 er et tall, eller spesifikt et heltall, og at "hei" er et ord eller "streng" i datasnakk. Så på grunn av det trengte noen programmeringsspråk å spesifisere hva slags ting de jobbet med. Hvis du for eksempel trengte å legge til to tall i Java, er det her du må gjøre -

class AddNums(){

public static void main(String args[]){

int first = 1;

int second = 2;

int sum = first + second;

System.out.println(sum);

}

}

Ser du det "int" nøkkelordet? Det står for "heltall" og som i utgangspunktet bare forteller datamaskinen, "Hei, jeg trenger noe for å lagre dette nummeret, men siden du er for dum til å vite at det er et tall, har jeg spesifisert det, og så bør du huske at variabelen kalt “først” kan bare lagre heltallverdier, og jeg har gitt verdien 1. Og så videre med "andre" og "sum" ". Det er det som skjer med Java. I Python?

first = 1

second = 2

sum = first + second

print(sum)

Ser du hvor rent det er? Legg merke til det rolige fraværet av semikolon.

  • Python støtter alle programmeringsstiler. Ok, dette kan være litt kontroversielt, men det er fortsatt verdt å nevne. I det store og hele er det to metoder (ingen ordspill ment) for programmering - objektorientert og prosessuelt. Jeg kommer ikke til å komme inn i detaljer, men kort fortelling, de er begge gode måter å nærme seg problemer på, men Object Oriented er bedre egnet for store prosjekter og vil, hvis det gjøres riktig (en enorm avtale i seg selv), være renere . Prosedyren er bedre for små prosjekter å få ting, bare, gjort. For eksempel -

class Hello{

public static void main(String args[]){

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

}

}

vs

def main():

print("Hello world!")

main()

  • Nå støtter både Python og Java OOP (objektorientert programmering), men Java tvinger det på deg ved å gi deg ingen andre vei ut. Det kan være bra for store selskaper og store prosjekter, men for noen som ikke en gang vet hva en klasse er, kan det være et stort problem. Python, derimot, lar deg gjøre dine egne ting. Igjen, dette kan være dårlig, men alt avhenger av hva slags praksis du plukker opp og følger. Ruby er et annet språk, og det er veldig som ligner på Python, men jeg liker det ikke så mye fordi det er mye mildere på kodere. Python opprettholder slags den fine linjen.Men ja, for en nybegynner kan Objektorientert føle seg tvunget hvis alt du trenger å gjøre er å skrive noe for å ta i to tall og skrive ut summen, men i det lange veldig lenge run, det kan være bra.
  • Python brukes nesten overalt. Webutvikling? Kryss av. Penetrasjonstesting? Kryss av. Gjør fantastiske spill? Kryss av. Limkode for prosjekter som ikke er opprinnelig skrevet i Python? Kryss av. Maching Learning? Dobbeltsjekk den gutten! Vitenskapelig forskning? Kryss av. Akademikere? Kryss av. Android-apper og andre prosjekter som kan skaleres ... Java er din greie. Innfødt programmering er ett sted der Python mislykkes.

Og jeg tror det handler om det. Begge språkene er gode i sine egne ting, og det de brukes til, men Python, hendene nede, er en av de beste tingene en nybegynner kan begynne med i dag.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *