askorek
askorek
#programowanie #python

mam metodę, która rysuje mapy. Raz rysuje biorąc dane z pola a, raz biorąc dane z pola b (w zależności od podanego do metody parametru). Wygląda to mniej-więcej tak:

'def rysuj_mape(self, typ_mapy):
' if typ_mapy == 'a':
' ' rysuj(self.a)
' elif typ_mapy == 'b':
' ' rysuj(self.b)

problem w tym, że funkcja rysuj jest bardziej skomplikowana i wielokrotnie występuje tam odwołanie do self.a lub self.b

chciałbym zrobić coś takiego:

'def rysuj_mape(self, parametr):
' magia = cos_zrob_z_tym(parametr)
' rysuj(self.magia)

czyli przekazać do funkcji nazwę parametru z którego ma korzystać. Da się to jakoś wyczarować?
1
  • Najlepsze
  • Wszystkie komentarze
morsik
morsik
@askorek:

rysuj(getattr(self, typ_mapy))
2
askorek
askorek
@morsik: tak wiem, to tylko dla przykładu tutaj było :)
1
askorek
askorek
@morsik: o właśnie coś takiego będzie ok
0
morsik
morsik
@askorek: tylko pamiętaj, żeby nazywać zmienne/funkcje/klasy/metody po angielsku, a nie po polsku :<
Mieszanie języków to zuo.
0
bubafed
bubafed
@askorek: lepiej w klasie zrób
0
fnord23
@askorek: kombinujesz jak koń pod górę.

problem w tym, że funkcja rysuj jest bardziej skomplikowana i wielokrotnie występuje tam odwołanie do self.a lub self.b

przecież w rysuj nie używasz już self.a ani self.b tylko argumentu rysuj
0
askorek
askorek
@fnord23: tak naprawde jest to troche bardziej skomplikowane, coś w stylu:

self.znajdz_element(0).a
self.znajdz_element(90).a
self.znajdz_element(180).a

itd - używam tego samego pola kilku różnych obiektów tej samej klasy
0