Wpis z mikrobloga

#naukaprogramowania #python

Ok to robię tak tworzę sobie klasę nazwijmy ją 'a' która w konstruktorze (_init_()) ma jedno pole które chce, żeby było listą, później tworzę obiekt typu a i chcę zrobić tak, że jeżeli włożę do konstruktora np. int to wysypie błąd. Widziałem, że jest metoda isinstance(), ale piszą, że nie powinno się sprawdzać w sposób jawny, ponieważ zmniejsza to elastyczność kodu, to w takim razie jak powinno się to zrobić, czy może po prostu nie sprawdzać i trzeba uważać co gdzie się pisze
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@kaab10: nie widzę tego inaczej niż: `assert isinstance(obj, str), 'Argument of wrong type!'

Ale fakt jest taki, że to Python dynamicznie typowany. I albo wprowadzasz poprawnie dane, ale powinieneś przemyśleć swoje zachowanie ;)
  • Odpowiedz
@morsik: już z 3 tygodnie siedzę w pythonie i dalej nie mogę się do niego przekonać, nie widzę żadnych plusów w nim, w sumie nie ma co się dziwić, jak wcześniej programowałem w javie :P
  • Odpowiedz
Widziałem, że jest metoda isinstance(), ale piszą, że nie powinno się sprawdzać w sposób jawny, ponieważ zmniejsza to elastyczność kodu


@kaab10: Nie do końca. Dobrze jest robić kod jak najbardziej ogólny, tak żeby można było na przykład podać krotkę lub generator zamiast listy, ale na początku nauki nie musisz się tym przejmować. Jeżeli Ty, autor, jawnie zakładasz że argumentem wejściowym ma być lista, to powinieneś to wymusić. Oprogramowanie nie powinno
  • Odpowiedz
@kaab10: jak w pythonie piszesz tak jak w javie to nie ma co się dziwić xD jak to ma być list to sprawdzaj isinstancem, ale z doświadczenia powiem ci, ze jeżeli może być to list to powinieneś akceptować każdy iterable obiekt :)

btw, __init__(self) to nie konstruktor :)
  • Odpowiedz
@morsik: to tak rzucam jako ciekawostkę, początkującemu ta wiedza i tak się do niczego nie przyda :) ale dobrze jest znać swoje narzędzia dogłębnie
  • Odpowiedz