wytrzzeszcz
#naukaprogramowania #python
jak powinno się robić takie coś:
mamy folder ./karty/ i tam są pliki .py kart dziedziczące po ogólnej karcie

teraz chce to zaimportować, wylosować kartę z pośród tych w katalogu ./karty/ i wykonać an tym kod
  • Najlepsze
  • Wszystkie komentarze
b3rly
b3rly
b3rly
1
@wytrzzeszcz zrob sobie metode ktora zwraca losowy obiekt/na podstawie jakich parametrow. zaimportuj wszystkie klasy kart do tego pliku i wywoluj ta metode z glownego programu ;)
Wrath_of_the_Tyrant
@wytrzzeszcz: w folderze /karty/ masz po prostu same klasy? Musisz sobie stworzyć jakąś klasę zbiorczą w której masz np. listę w której są już wypełnione karty i tej klasie dać metodę która zwraca losową kartę z tej listy.
Wrath_of_the_Tyrant
@wytrzzeszcz: Te karty to są karty w talii czy każda karta ma inne właściwości? Bo jeżeli chodzi o normalne karty to tam bez sensu jest robić dziedziczenie.
croppz
@wytrzzeszcz: random.choice(os.listdir('dir_path'))
wytrzzeszcz
wytrzzeszcz Autor
0
@Wrath_of_the_Tyrant
@croppz karty jak w magi i mieczu
Ten random da mi string a ja chcę obiekt
b3rly
b3rly
b3rly
0
@wytrzzeszcz czemu kazda karte trzymasz w osobnym pliku?
wytrzzeszcz
wytrzzeszcz Autor
0
@b3rly by ułatwić życie "moderom"
Wrath_of_the_Tyrant
@wytrzzeszcz: a masz już jakąś listę tych kart? W sensie gotowych instancji. Wtedy można zrobić

karta = random.choice(moje_karty)
wytrzzeszcz
wytrzzeszcz Autor
0
@Wrath_of_the_Tyrant mogę mieć, tylko nie wiem jak to się robi
chester
@wytrzzeszcz: chodzi Ci o możliwość tworzenia jakby "pluginów"? stąd te pliki w osobnym katalogu?
Zobacz tu https://stackoverflow.com/questions/2349991/python-how-to-import-other-python-files
aseeon_
@wytrzzeszcz: Albo miej zbiorczą klasę która ma listę wszystkich kart już zaimportowanych i gotowych do losowania, albo zrób jak croppz napisał i po prostu sobie zaimportuj dopiero po losowaniu.
wytrzzeszcz
wytrzzeszcz Autor
0
@aseeon_: @chester: @Wrath_of_the_Tyrant: @Wrath_of_the_Tyrant: @croppz:
takie coś zrobiłem
dobrze to robię?
Wrath_of_the_Tyrant
@wytrzzeszcz: to jest kod testowy, czy oficjalny? Bo mieszasz angielski z polskim.

Poza tym to wyszukiwanie nazwy pliku i zakładanie że klasa ma tą samą nazwę to jest mocny hack. Zakładasz że one będą takie same. Już nie mówiąc, że nazwa pliku jest pisana z małej a nazwy klas zwyczajowo są z dużej.

Zrób po prostu klasę, gdzie masz listę taką
wytrzzeszcz
wytrzzeszcz Autor
0
@Wrath_of_the_Tyrant: każda karta ma takie same metody to jest niejako wymuszane przez specyfikę tego co piszę

tej listy klas własnie chciałem uniknąć, zależy mi na jak najprostrzym dodawaniem tych kart
Wrath_of_the_Tyrant
@wytrzzeszcz: te karty dziedziczą po karcie bazowej?
wytrzzeszcz
wytrzzeszcz Autor
0
@Wrath_of_the_Tyrant tak, ale jeszcze nie wiem czy formalnie