Van-e egyenértékű Java tükrözés a Pythonban?


Legjobb válasz

A Java és a C # nyelven a reflexió lehetővé teszi a kódot egy osztály vagy egy példány lekérdezéséhez, hogy a tulajdonságok fusson idő. Az a kifejezés, amelyet a Python-ban használnak, “önvizsgálat”. A részletekért lásd: Útmutató a Python önvizsgálatához .

Ilyeneket tehet:

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

A Python azonban nem szigorúan van beírva, így valójában nem az önleíró típusok fogalma. Ez azt jelenti, hogy néhány olyan dolog, amire általában reflektálunk (entitásmodellek, egyedi sorosítás, például JsonConvert, néhány IoC minta és általános szempont-orientált trükkök), nem fordítanak borzasztóan jól. Amit láttam, úgy tűnik, hogy a Python introspekciója leginkább automatikusan generált segítség.

Valamit megtehetsz a kódolási konvenciók használatával, de a fordító nem fogja tudni érvényesíteni azokat a dolgokat, amelyekre számíthatsz. A “Thinking Python” -hoz egy kicsit hozzá kell szokni, és a nyelv olyan kompromisszumokat köt, amelyek kissé nyugtalanítóak, ha szigorú típusú háttérből származnak. A szórakozás része, hogy több időt kell fordítania a kódolásra és kevesebb időt kell a kódolási keretekre. Csak egy kis szoktatás kell hozzá.

Válasz

Python.

Ne is gondoljon arra, hogy másik nyelvet válasszon elsőként. Miért? Nos,

  • a Python egyszerű. Bízz bennem ebben. Első fő nyelvem a C ++ volt, és ez arra késztetett, hogy elgondolkodjak a karrier változásán. Itt van egy rövid C ++ kódrészlet a „Hello world” megjelenítéséhez a képernyőn –

#include

int main() {

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

return 0;

}

Ugyanez a helyzet a Pythonban

print("Hello world!")

  • A Python dinamikusan be van írva. Mi ez a világon? Oké, szóval a számítógépek némaak. Nem elég okosak ahhoz, hogy tudják, hogy 1 egy szám, pontosabban egész szám, és hogy a „hello” szó vagy „húr” a számítógépes beszélgetésben. Ezért néhány programozási nyelvnek meg kellett határoznia, hogy milyen dolgokkal dolgoznak. Például, ha két számot kellett hozzáadnia a Java-ban, a következőket kell tennie:

class AddNums(){

public static void main(String args[]){

int first = 1;

int second = 2;

int sum = first + second;

System.out.println(sum);

}

}

Látja ezt az „int” kulcsszót? Ez azt jelenti, hogy „egész”, és ez alapvetően csak azt mondja a számítógépnek: „Hé, szükségem van valamire a szám tárolásához, de mivel túl hülye vagy ahhoz, hogy tudd, hogy ez egy szám, ezt megadtam, és ezért emlékezned kell arra, hogy a változó az úgynevezett „első” csak tárolhatja az egész számokat, én pedig az 1 értéket adtam meg neki. És így tovább a „második” és az „összeg” ”értékkel. Ez van a Java-val. A Pythonban?

first = 1

second = 2

sum = first + second

print(sum)

Látja, mennyire tiszta? Vegye figyelembe a pontosvesszők derűs hiányát.

  • A Python minden programozási stílust támogat. Oké, ez kissé ellentmondásos lehet, de mégis megemlítendő. Általánosságban a programozásnak két módszere van (nincs szójáték): objektumorientált és eljárási. Nem fogok belemerülni a részletekbe, de rövid történet, mindketten remek módszerek a problémák kezelésére, de az objektumorientált jobban megfelel nagyszabású projekteknek, és ha jól csinálják (önmagában óriási üzlet), tisztábbak lesznek . Az eljárási szempontból jobb, ha a kis projektek csak elvégzik a dolgokat. Például -

class Hello{

public static void main(String args[]){

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

}

}

vs

def main():

print("Hello world!")

main()

  • Most a Python és a Java egyaránt támogatja az OOP-t (objektum-orientált programozás), de a Java rákényszeríti, hogy másokat nem ad kiút. Ez nagy cégek és nagyszabású projektek számára jó lehet, de annak, aki nem is tudja, mi a osztály , nagy gond lehet. A Python viszont lehetővé teszi a saját dolgait. Ez megint lehet, hogy rossz dolog, de mindez attól függ, hogy milyen gyakorlatot alkalmaz és követ. A Ruby egy másik nyelv, és nagyon hasonlít a Python-hoz, de nem szeretem annyira, mert a kódolókkal szemben enyhébb. A Python fenntartja ezt a finom vonalat.De igen, egy kezdő számára az Object Oriented kényszerűnek érezheti magát, ha csak annyit kell tennie, hogy írjon valamit, hogy két számot vegyen fel, és kinyomtassa az összegüket, de hosszú, nagyon hosszú run, ez jó dolog lehet.
  • A Pythont szinte mindenhol használják. Webfejlesztés? Jelölje be. Penetrációs vizsgálat? Jelölje be. Félelmetes játékokat készíteni? Jelölje be. Nem Python-ban írt projektek ragasztókódja? Jelölje be. Maching tanulás? Ellenőrizze még egyszer azt a fiút! Tudományos kutatás? Jelölje be. Akadémikusok? Jelölje be. Android-alkalmazások és más méretarányos projektek…? A Java a te dolgod. A natív programozás az egyik hely, ahol a Python kudarcot vall.

És szerintem ennyi. Mindkét nyelv remek a saját dolgában, és mire használják őket, de a Python, kezét lenyomva, az egyik legjobb dolog, amellyel egy kezdő ma kezdhet.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük