Wpis z mikrobloga

Czy przez to, że Python jest dynamiczne typowany, nie potrzebuje intefejsów?

Załóżmy, że mam 2 klasy. Jedna TextFile druga PdfFile. Obie mają metodę save(), która służy do zapisu do pliku o określonym formacie. Mam też metodę getsavetofile(), która zwraca obiekt jednej z tych 2 klas i potem na tym obiektcie wywołuje metodę save().

class TextFile:
def save(self):
print("Saving to text file...")

class PdfFile:
def save(self):
print("Saving to pdf file...")

def get_save_to_file():
return PdfFile()

txt = get_save_to_file()
txt.save()

Np. w Javie musiałbym utworzyć interfejs Savable i potem metodę savable getSaveToFile() { return TexfFile()/PdfFile(). }
Intefejsy i klasy abstrakcyjne w ogolę istnieją w Pythonie i mają jakieś zastosowanie?
#informatyka #programowanie #naukaprogramowania #programista15k #python
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Edelner: masz takie mechanizmy, ale są one tylko po to, żeby poprawić czytelność. Co do wspomnianych wcześniej mechanizmów to masz nowość w pythonie 3.8 (protokoły), które różnią się tym od abc, że twoja klasa nie musi nic implementować: poprawność "interfejsu" jest sprawdzana w miejscu użycia
  • Odpowiedz