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
@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 ;)
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 być
@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 :)