Czy mogę wywołać metodę przetwarzania danych przez łączenie łańcuchów?Jak wywołać metodę według napisu w Pythonie?
Na przykład, to jest ok, aby wpisać "data.image.truecolor()" w kodzie,
data.image.truecolor() # This line is successful to call method
Mój problem jest: Jeśli mam obiekt danych nazwanych danych (nie łańcuch), jak połączyć metodę ".image.truecolor" żądań, aby wywołać metodę przetwarzania danych?
Jest jak:
result=getattr(data,".image.truecolor")
result() # which is equivalent to the code above
oczywiście, nie powiodła się. Dostałem AttributeError.
Ponieważ istnieje wiele metod do przetwarzania danych, na przykład:
data.image.fog()
data.image.ir108()
data.image.dnb()
data.image.overview()
# .... and other many methods
Jest głupi i brzydki, aby wpisać kod ręcznie, nie jest to?
By tego powodu, mam nadzieję, mogę użyć tego kodu:
methods=["fog","ir108","dnb","overview"]
for method in methods:
method=".image"+method
result=getattr(data,method) # to call method to process the data
result() # to get the data processed
Czy można zrobić w ten sposób?
Dzięki za pomoc.
Dziękuję, ale ten sposób nie powiedzie się. Ponieważ ostateczne dane są przetwarzane przez wiele różnych klas (obejmują różne moduły), nadal otrzymuję AttributeError od dataImage = data.image. Jednak wiem, jak to zrobić z twojej pomocy. Dzięki. – Makoto
Przykro mi ....... Teraz to się udaje! ponieważ używam "data = data.image", aby zaoszczędzić miejsce w pamięci przez kolekcję Gabarge Pythona (mam 16 GB na moim komputerze, to wciąż za mało), to jest falied, więc myślę, że nie udało się również przypisać do innej zmiennej . Jednak próbuję dataImage = data.image, to się udaje! Dziękuję Ci! – Makoto