[python] Funkce vs. metody třídy (bylo RE: nevznik objektu)
Přikryl Petr
prikryl na atlas.cz
Čtvrtek Březen 25 09:44:45 CET 2010
Michal Vyskocil píše
>David Rohleder píše
>> Petr Messner píše
>>
>> Možná jsem prostě jenom příliš staromódní [...]
...
>> > - nevolat konstruktor (tedy nevytvářet objekt), ale volat funkci,
>> > která sama vytvoří objekt, nebo vrátí None - podle mě nejlepší řešení
...
>> To zní zajímavě, ale moc mně to nezapadá do takového toho "objektového"
>> pohledu na svět. Nutno přiznat, že je to asi celkem jedno, z venku
>> modulu to vypadá stejně jako přímo ten konstruktor objektu.
...
>No tak to nemusí být funkce, ale metoda třídy
>Je to sice trošku Javovský přístup, ale aspoň
>to nezačíná na class IPFactory :-)
Já bych se přimlouval za to být trochu staromódní
a nesnažit se všechno převrátit na objekt. Staré dobré
funkce jsou zde tím nejjednodušším vyjádřením uvedeného
záměru. Snažit se zabalit funkci do podoby něčeho
"vznešenějšího" mi připadá zbytečné.
Pokud třída neobsahuje žádnou členskou proměnnou
a není určena k dědění, pak psát kód do podoby
její metody třídy mi připadá ve srovnání s prostou
funkcí obtížně zdůvodnitelné.
KISS -- Keep It Small and Stupid
Taková třída by mohla přinést navíc pouze svázání
více souvisejících metod dohromady. Třída, ze které
se nevytvářejí instance (protože není nutné zachycovat
vnitřní stav) je degradací na pouhý prostor jmen, do
kterého jsou umístěny prosté funkce.
V Pythonu vyjádříme prostor jmen formou odděleného
modulu -- když už to musí být.
Podle mého názoru funkce a objektový pohled na věc
spolu nijak nebojují.
pepr
Další informace o konferenci Python