Czy istnieje odpowiednik odbicia w języku Java w Pythonie?


Najlepsza odpowiedź

W Javie i C # odbicie umożliwia kodowanie w celu odpytywania klasy lub instancji w celu uzyskania właściwości podczas wykonywania czas. Termin, którego używają w Pythonie to „introspekcja”. Zobacz Przewodnik po introspekcji w Pythonie , aby uzyskać szczegółowe informacje.

Możesz zrobić coś takiego:

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

Jednak Python nie jest napisany ściśle, więc tak naprawdę nie istnieje pojęcie typów samoopisujących się. Oznacza to, że niektóre z rzeczy, do których zwykle używamy odbicia (modele jednostek, niestandardowa serializacja, taka jak JsonConvert, niektóre wzorce IoC i ogólne sztuczki zorientowane na aspekty) nie tłumaczą się zbyt dobrze. Z tego, co widziałem, introspekcja w Pythonie wydaje się być używana głównie do automatycznie generowana pomoc.

Możesz coś zrobić używając konwencji kodowania, ale kompilator nie będzie w stanie wymusić rzeczy, których możesz się spodziewać. „Myślenie w Pythonie” wymaga trochę przyzwyczajenia, a język wymaga kompromisów, które są trochę niepokojące, jeśli pochodzisz ze ścisłego tła typu. Część zabawy polega na tym, że spędzasz więcej czasu na kodowaniu kodu, a mniej na programowaniu frameworków. Wystarczy trochę się przyzwyczaić.

Odpowiedz

Python.

Nawet nie myśl o tym, aby wybrać inny język jako pierwszy. Czemu? Cóż,

  • Python jest łatwy. Zaufaj mi w tym. Moim pierwszym głównym językiem był C ++ i to doprowadziło mnie do rozważenia zmiany kariery. Oto krótki fragment kodu C ++ do wyświetlania „Hello world” na ekranie –

#include

int main() {

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

return 0;

}

Tak samo jest w Pythonie

print("Hello world!")

  • Python jest wpisywany dynamicznie. Co to jest na świecie? Ok, więc komputery są głupie. Nie są na tyle sprytni, by wiedzieć, że 1 to liczba, a konkretnie liczba całkowita, a „cześć” to słowo lub „ciąg znaków” w rozmowie komputerowej. Z tego powodu niektóre języki programowania musiały określać rodzaj rzeczy, z którymi pracowały. Na przykład, jeśli chcesz dodać dwie liczby w Javie, oto co musisz zrobić -

class AddNums(){

public static void main(String args[]){

int first = 1;

int second = 2;

int sum = first + second;

System.out.println(sum);

}

}

Widzisz słowo kluczowe „int”? To oznacza „liczbę całkowitą” i po prostu mówi komputerowi: „Hej, potrzebuję czegoś do przechowywania tej liczby, ale ponieważ jesteś zbyt głupi, by wiedzieć, że to liczba, podałem ją, więc powinieneś pamiętać, że zmienna o nazwie „pierwsza” może tylko przechowywać wartości całkowite, a ja nadałem jej wartość 1. I tak dalej z „sekundą” i „sumą”. Tak właśnie jest z Javą. W Pythonie?

first = 1

second = 2

sum = first + second

print(sum)

Czy widzisz, jakie to czyste? Zwróć uwagę na spokojny brak średników.

  • Python obsługuje wszystkie style programowania. W porządku, może to być trochę kontrowersyjne, ale nadal warto o tym wspomnieć. Ogólnie rzecz biorąc, istnieją dwie metody programowania (gra słów nie jest przeznaczona) - obiektowa i proceduralna. Nie zamierzam wchodzić w szczegóły, ale, krótko mówiąc, oba są świetnymi sposobami rozwiązywania problemów, ale zorientowany obiektowo lepiej nadaje się do projektów na dużą skalę i, jeśli zostanie wykonany prawidłowo (wielka sprawa sama w sobie), będzie czystszy . Procedura jest lepsza w przypadku małych projektów, aby po prostu załatwić sprawę. Na przykład -

class Hello{

public static void main(String args[]){

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

}

}

vs

def main():

print("Hello world!")

main()

  • Teraz zarówno Python, jak i Java obsługują OOP (programowanie obiektowe), ale Java wymusza to na tobie, nie dając nic innego wyjście. To może być dobre dla dużych firm i projektów na dużą skalę, ale dla kogoś, kto nawet nie wie, czym są zajęcia , może być dużym kłopotem. Z drugiej strony Python pozwala robić własne rzeczy. Ponownie, może to być zła rzecz, ale wszystko będzie zależeć od rodzaju praktyk, które podejmiesz i zastosujesz. Ruby to kolejny język i jest bardzo podobny do Pythona, ale nie podoba mi się to tak bardzo, ponieważ jest o wiele bardziej wyrozumiały dla programistów. Python w pewnym sensie utrzymuje tę cienką linię.Ale tak, dla początkującego zorientowanie obiektowe może czuć się zmuszone, jeśli wszystko, co musisz zrobić, to napisać coś, aby wziąć dwie liczby i wydrukować ich sumę, ale w długim, naprawdę długim run, to mogłoby być dobre.
  • Python jest używany prawie wszędzie. Tworzenie stron internetowych? Czek. Testy penetracyjne? Czek. Robisz niesamowite gry? Czek. Sklejać kod dla projektów, które nie są natywne napisane w Pythonie? Czek. Uczenie maszynowe? Sprawdź ponownie tego chłopca! Badania naukowe? Czek. Naukowcy? Czek. Aplikacje na Androida i inne skalowalne projekty…? Java to twoja sprawa. Programowanie natywne to jedyne miejsce, w którym Python zawodzi.

I myślę, że to wszystko. Oba języki są świetne na swój sposób i do czego są używane, ale Python, bez wątpienia, jest jedną z najlepszych rzeczy, od których może zacząć dziś początkujący.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *