Fórum Root.cz

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

Název: Oprava getattr v Pythonu
Přispěvatel: Jánn 03. 09. 2015, 21:03:14
Ahoj, naimportuji soubor s kódem
Kód: [Vybrat]
from muj.soubor import fnnazevale nevím jak napsat tento řádek
Kód: [Vybrat]
func = getattr(obj, "method", None)abych následně zavolal
Kód: [Vybrat]
func(args)pomůže niekdo ? Dekuji
Název: Re:Oprava getattr v Pythonu
Přispěvatel: ByCzech 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 04. 09. 2015, 13:50:04
Aha, tak to hledám něco jiného :-(
Kód: [Vybrat]
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 04. 09. 2015, 14:05:55
Nejspíš bude v locals(). Takže
Kód: [Vybrat]
locals()[funkce[0]](a, b, c, d)
Ale pokud je v modulu, tak třeba takto:
Kód: [Vybrat]
import os

os.__dict__["listdir"]("/home")
Název: Re:Oprava getattr v Pythonu
Přispěvatel: JaPe 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__