悩んでいること
たとえば、以下のようなコードを改良する際に、
python3
1def sums(vals): 2 n = 0 3 for k in vals: 4 n += k 5 return n 6 7# a = sums(3) # TypeError: 'int' object is not iterable 8b = sums([4,5,8])
以下のようにすれば上のエラーは解決しますが、
python3
1def sums(vals): 2 if type(vals) == list: 3 n = 0 4 for k in vals: 5 n += k 6 return n 7 else: 8 return vals 9 10a = sums(3) 11b = sums([4,5,8])
このように、条件分岐で対応するより、もっと良い(pythonぽい)応用範囲の広い方法があるのではないかと思い悩んでいます。さらには、後々、引数[[2,3],[4,5]]
などに対応する際に、拡張しやすいかなども考えて、手が止まっています。
(※上記の和を求めるコードはあくまで例で、たとえばnumpy
を使えばもっと簡単ですよ、とかいう話ではありません)
概念としてはポリモーフィズムというものを使うのかと思いましたが、そうではないのでしょうか。クラスも使っていませんし。
教えてほしいこと
こういった、異なる型の引数を想定した関数(クラス?)を設計する際に、どういったことを考えていけばよいのでしょうか。ここを乗り越えれば、かなり視野が広がる気がしてモヤモヤしています。質問が抽象的で申し訳ありませんが、よろしくお願いします。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/07 10:30
2018/11/07 10:46
2018/11/07 10:48
2018/11/07 10:53
2018/11/07 10:56