Możesz zrobić to na wiele sposobów, jednym z najbardziej intuicyjnych jest stworzenie metody buyMineral(Mineral) w definicji klasy Portfel przyjmującą jako argument Mineral, wtedy w tej metodzie wywołujesz metodę Mineral.show() i odejmujesz ją od właściwości money np. korzystając z metody, którą już napisałeś tj. buy.
Nie siedzę w Pythonie, więc napiszę w pseudo javascriptcie:
buyMineral(mineral){
buy(mineral.show())
}
wtedy możesz wywołać w swoim mainie metodę na obiekcie typu portfel w sposób następujący:
user.buyMineral(coal)
Dodatkowo kilka uwag dotyczących twojego kodu:
- Jeśli piszesz program po angielsku (co jest b. dobrą praktyką i tak powinno się robić) to używaj w całym programie angielskiego nazewnictwa. Portfel powinien nazywać się Wallet, to samo z ceną.
- Metody, które zwracają wartości prywatnych właściwości to tak zwane gettery, nazwy metod
show_money()
oraz
show()
bardziej sugerują, że jakieś wartości będą nam pokazane (może wyprintowane ???), bardziej pasującymi nazwami byłyby getMoney() oraz getPrice()