Oprava getattr v Pythonu

Jánn

Oprava getattr v Pythonu
« kdy: 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


ByCzech

Re:Oprava getattr v Pythonu
« Odpověď #1 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?

Jánn

Re:Oprava getattr v Pythonu
« Odpověď #2 kdy: 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)

Re:Oprava getattr v Pythonu
« Odpověď #3 kdy: 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")

JaPe

Re:Oprava getattr v Pythonu
« Odpověď #4 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__