[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