Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Jánn kdy 03. 09. 2015, 21:03:14

Název: Oprava getattr v Pythonu
Přispěvatel: Jánn kdy 03. 09. 2015, 21:03:14
Ahoj, naimportuji soubor s kódem
from muj.soubor import fnnazev
ale nevím jak napsat tento řádek
func = getattr(obj, "method", None)
abych následně zavolal
func(args)
pomůže niekdo ? Dekuji
Název: Re:Oprava getattr v Pythonu
Přispěvatel: ByCzech kdy 03. 09. 2015, 22:25:59
getattr(obj, name[, default]) vrací HODNOTU názvu atributu daného objektu.

Takže ve vašem případě má func buď hodnotu atributu method z objektu obj nebo hodnotu None (výchozí, pokud atribut neexistuje). Co chcete docílit?
Název: Re:Oprava getattr v Pythonu
Přispěvatel: Jánn kdy 04. 09. 2015, 13:50:04
Aha, tak to hledám něco jiného :-(
funkce = ['fnnazev', 'fnotehr', 'fnadd']
chci zavolat funkci funkce[0](a, b, c, d)
Název: Re:Oprava getattr v Pythonu
Přispěvatel: Petr Blahos kdy 04. 09. 2015, 14:05:55
Nejspíš bude v locals(). Takže

locals()[funkce[0]](a, b, c, d)

Ale pokud je v modulu, tak třeba takto:

import os

os.__dict__["listdir"]("/home")
Název: Re:Oprava getattr v Pythonu
Přispěvatel: JaPe kdy 05. 09. 2015, 13:19:56
mod = __import__('muj.soubor',globals(),locals(),[])
fnc = getattr(mod,'jmeno_funkce')
fnc()

https://docs.python.org/2/library/functions.html#__import__