Nejlepší odpověď
V prostředí Java a C # vám reflexe umožňuje kód dotazovat třídu nebo instanci, abyste získali vlastnosti za běhu čas. Termín, který používají v Pythonu, je „introspekce“. Podrobnosti najdete v Průvodce introspekcí Pythonu .
Můžete udělat něco takového:
#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 však není přísně zadán, takže ve skutečnosti neexistuje pojem samostatně popisujících typů. To znamená, že některé věci, pro které obvykle používáme reflexi (modely entit, vlastní serializace jako JsonConvert, některé vzory IoC a triky zaměřené na obecný aspekt), se nepřekládají strašně dobře. Z toho, co jsem viděl, se zdá, že introspekce Pythonu se většinou používá pro automaticky generovaná nápověda.
Něco můžete dělat pomocí kódovacích konvencí, ale kompilátor nebude schopen vynutit věci, které byste očekávali. „Thinking Python“ si trochu zvykne a jazyk dělá kompromisy, které jsou trochu znepokojivé, pokud pocházíte z přísného pozadí. Část zábavy spočívá v tom, že strávíte více času kódováním kódu a méně času kódováním rámců. Stačí si trochu zvyknout.
Odpovědět
Python.
Nepřemýšlejte o tom, že si jako první vyberete jiný jazyk. Proč?
- Python je snadný. V tomto mi věřte. Můj první hlavní jazyk byl C ++ a vedlo mě to k úvahám o změně kariéry. Zde je krátký výňatek z C ++ kódu pro zobrazení „Hello world“ na obrazovce –
#include
int main() {
std::cout << "Hello world!" << std::endl;
return 0;
}
V Pythonu je totéž.
print("Hello world!")
- Python se zadává dynamicky. Co to na světě je? Dobře, takže počítače jsou hloupé. Nejsou dost chytří na to, aby věděli, že 1 je číslo nebo konkrétně celé číslo a že „ahoj“ je slovo nebo „řetězec“ v počítačových rozhovorech. Proto některé programovací jazyky potřebovaly specifikovat druh věcí, se kterými pracovali. Pokud jste například potřebovali přidat dvě čísla v Javě, budete muset udělat následující -
class AddNums(){
public static void main(String args[]){
int first = 1;
int second = 2;
int sum = first + second;
System.out.println(sum);
}
}
Vidíte klíčové slovo „int“? To znamená „celé číslo“ a to v podstatě říká počítači: „Hej, potřebuji něco k uložení tohoto čísla, ale protože jsi příliš hloupý, než abys věděl, že je to číslo, specifikoval jsem ho, a proto bys měl pamatovat s názvem „first“ může pouze ukládat celočíselné hodnoty a já jsem mu dal hodnotu 1. A tak dále s „second“ a „sum“ “. To je to, co se děje s Javou. V Pythonu?
first = 1
second = 2
sum = first + second
print(sum)
Vidíte, jak je to čisté? Všimněte si klidné nepřítomnosti středníků.
- Python podporuje všechny styly programování. Dobře, může to být trochu kontroverzní, ale přesto to stojí za zmínku. Obecně existují dvě metody programování (bez slovní hříčky) - objektově orientované a procedurální. Nebudu se podrobně zabývat, ale zkrátka a dobře, oba jsou skvělými způsoby, jak přistupovat k problémům, ale Object Oriented je vhodnější pro rozsáhlé projekty a bude, pokud bude provedeno správně (samo o sobě obrovské řešení), čistší . Procedurální je lepší pro malé projekty, aby věci byly hotové. Například -
class Hello{
public static void main(String args[]){
System.out.println("Hello world!");
}
}
vs
def main():
print("Hello world!")
main()
- Nyní Python i Java podporují OOP (objektově orientované programování), ale Java vám ho vnucuje tím, že vám neposkytne žádné další cesta ven. To může být pro velké společnosti a velké projekty dobrá věc, ale pro někoho, kdo ani neví, co je třída , může být velkým problémem. Na druhé straně Python vám umožňuje dělat si vlastní věci. To může být opět špatná věc, ale vše bude záviset na druhu postupů, které si osvojíte a budete je dodržovat. Ruby je další jazyk a je velmi podobný Pythonu, ale moc se mi to nelíbí, protože na kodéry je mnohem shovívavější. Python druh udržuje tenkou linku.Ale ano, pro začátečníky se Object Oriented může cítit vynuceně, pokud vše, co musíte udělat, je napsat něco, co vezme dvě čísla, a vytisknout jejich součet, ale v dlouhém, opravdu dlouhém run, může to být dobrá věc.
- Python se používá téměř všude. Webový vývoj? Šek. Penetrační testování? Šek. Vytváříte úžasné hry? Šek. Lepit kód pro projekty, které nejsou nativně napsány v Pythonu? Šek. Maching Learning? Zkontrolujte toho chlapce! Vědecký výzkum? Šek. Akademici? Šek. Aplikace pro Android a další škálovatelné projekty…? Java je vaše věc. Nativní programování je jedno místo, kde Python selže.
A myslím, že to je o tom. Oba jazyky jsou skvělé ve své vlastní věci a to, k čemu se používají, ale Python, ruce dolů, je jednou z nejlepších věcí, s nimiž by začátečník mohl dnes začít.