Onko Pythonissa vastaavaa Java-heijastusta?


Paras vastaus

Java- ja C # -ominaisuuksien avulla heijastus antaa koodin kysyä luokkaa tai ilmentymää saadaksesi ominaisuudet suoritettavaksi aika. Termi, jota he käyttävät Pythonissa, on ”itsetarkastus”. Katso lisätietoja Pythonin itsetarkastuksen opas .

Voit tehdä jotain tällaista:

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

Pythonia ei kuitenkaan kirjoiteta tarkasti, joten oikeastaan ​​ei ole käsitystä itse kuvaavista tyypeistä. Tämä tarkoittaa sitä, että jotkut asiat, joihin tyypillisesti käytämme heijastusta (kokonaisuusmallit, mukautettu sarjallisuus, kuten JsonConvert, jotkut IoC-mallit ja yleiset näkökulmiin suuntautuvat tempput), eivät käänny kauhistuttavasti. Nähdäni näyttää siltä, ​​että Pythonin sisäistä tarkastelua käytetään enimmäkseen automaattinen apu.

Voit tehdä jotain koodauskäytäntöjen avulla, mutta kääntäjä ei pysty toteuttamaan sellaisia ​​asioita kuin olet ehkä odottanut. ”Thinking Python” vie vähän totuttelua, ja kieli tekee kompromisseja, jotka ovat hieman hämmentäviä, jos olet kotoisin tiukasta taustasta. Osa hauskaa on, että saat käyttää enemmän aikaa koodauskoodiin ja vähemmän aikaa koodauskehyksiin. Se vie vain vähän totuttelua.

Vastaa

Python.

Älä edes ajattele sitä valitaksesi toisen kielen ensimmäiseksi. Miksi? No,

  • Python on helppo. Luota minuun tähän. Ensimmäinen pääkieleni oli C ++, ja se sai minut ajattelemaan uramuutosta. Tässä on lyhyt C ++ -koodi, jonka avulla ”Hei maailma” näytetään näytöllä –

#include

int main() {

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

return 0;

}

Tässä on sama asia Pythonissa

print("Hello world!")

  • Python kirjoitetaan dynaamisesti. Mikä maailmassa tuo on? Okei, joten tietokoneet ovat tyhmiä. He eivät ole tarpeeksi älykkäitä tietääkseen, että 1 on luku tai nimenomaan kokonaisluku ja että "hei" on sana tai "merkkijono" tietokonepuhelussa. Joten siksi joidenkin ohjelmointikielien oli määriteltävä millaista tavaraa he työskentelivät. Esimerkiksi jos sinun on lisättävä kaksi numeroa Java-ohjelmassa, sinun on tehtävä näin -

class AddNums(){

public static void main(String args[]){

int first = 1;

int second = 2;

int sum = first + second;

System.out.println(sum);

}

}

Näetkö tämän "int" -avainsanan? Se tarkoittaa "kokonaisluku" ja se vain kertoo tietokoneelle: "Hei, tarvitsen jotain tämän numeron tallentamiseksi, mutta koska olet liian tyhmä tietämään, että se on numero, olen määrittänyt sen, joten muista, että muuttuja nimeltään "ensimmäinen" voi vain tallentaa kokonaislukuarvot ja olen antanut sille arvon 1. Ja niin edelleen sanoilla "sekunti" ja "summa" ". Juuri siinä on Java. Pythonissa?

first = 1

second = 2

sum = first + second

print(sum)

Näetkö, kuinka puhdas se on? Huomaa puolipisteiden seesteinen puuttuminen.

  • Python tukee kaikkia ohjelmointityylejä. Okei, tämä saattaa olla hieman kiistanalainen, mutta se on silti mainitsemisen arvoinen. Ohjelmoinnissa on yleisesti ottaen kaksi tapaa (ei sanoja) - olio- ja menettelytapa. En aio perehtyä yksityiskohtiin, mutta, lyhyt tarina, ne ovat molemmat loistavia tapoja lähestyä ongelmia, mutta olioihin sopiva soveltuu paremmin laajamittaisiin projekteihin, ja jos se tehdään oikein (valtava juttu itsessään), on puhtaampi . Menettelytapa on parempi pienille hankkeille saada asioita, vain, tehty. Esimerkiksi -

class Hello{

public static void main(String args[]){

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

}

}

vs

def main():

print("Hello world!")

main()

  • Nyt sekä Python että Java tukevat OOP: ta (olio-ohjelmointi), mutta Java pakottaa sen sinulle antamatta sinulle muuta tie ulos. Se voi olla hyvä asia suurille yrityksille ja suurille hankkeille, mutta joku, joka ei edes tiedä, mikä -luokka on, voi olla iso hässäkkä. Python puolestaan ​​antaa sinun tehdä omasi. Jälleen, tämä saattaa olla huono asia, mutta kaikki riippuu siitä, millaisia ​​käytäntöjä valitset ja noudatat. Ruby on toinen kieli, ja se on hyvin samanlainen kuin Python, mutta en pidä siitä yhtä paljon, koska se on koodereille suotuisampi. Python ylläpitää sellaista hienoa linjaa.Mutta kyllä, aloittelijoille Object Oriented saattaa tuntua pakotetulta, jos sinun tarvitsee vain kirjoittaa jotain otettavaksi kahteen numeroon ja tulostaa niiden summa, mutta pitkällä todella pitkällä run, se voi olla hyvä asia.
  • Pythonia käytetään melkein kaikkialla. Verkkokehitys? Tarkistaa. Tunkeutumistestaus? Tarkistaa. Tee mahtavia pelejä? Tarkistaa. Liimakoodi projekteille, joita ei ole kirjoitettu Pythonissa? Tarkistaa. Oppiminen? Tarkista vielä poika! Tieteellinen tutkimus? Tarkistaa. Akateemikot? Tarkistaa. Android-sovellukset ja muut mittakaavassa kykenevät projektit…? Java on sinun juttusi. Natiivi ohjelmointi on yksi paikka, jossa Python epäonnistuu.

Ja mielestäni siinä on kyse. Molemmat kielet ovat hienoja omissa asioissaan ja mihin niitä käytetään, mutta Python, kädet alaspäin, on yksi parhaista asioista, joita aloittelija voisi aloittaa tänään.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *