タグ

ブックマーク / python.ms (3)

  • Python はなんで self を書かないといけないの? | 民主主義に乾杯

    # はじめに Python の self は関数の第一引数です。 「self とはなにか」については、以下の記事で見てきました。 Python の生みの親である Guido van Rossum 氏が 説明してくれたメールを補足する形で、 「なんで self を書かないといけないのか」について考えていきます。 なぜPythonのメソッド引数に明示的にselfと書くのか (opens new window) 上記の記事は Pythonの生みの親 Guido によって書かれたブログを和訳したものです。 Bruce という人が 「第一引数にわざわざ self を与えなくたって、 暗黙的に呼び出し元のインスタンスオブジェクトを self に代入すればいいじゃん」 と提案したのに対して、Guido が、それがなぜダメなのかの理由を述べています。 「なんで、ってなんで?」って感じですが。 メソッドで

    nilab
    nilab 2022/02/03
    「Python では「なぜ、第一引数に明示的に self を書くのか?」は、 実は「なぜ、メソッドの定義を関数定義文で行なっているのか?」に言い換えることができます」
  • Rust なのか Go なのか | 民主主義に乾杯

    # Rust なのか Go なのか ひとりごと。色々、漁ってると、こんな雰囲気。 並列処理で もっと高速に書きたい → Go Go で大事なのは → goroutine ガシガシ書き込んで もっと高速に書きたい → Rust Rust で大事なのは → 所有権 # 1. 概観 Go と Rsut は全く用途が違うそうです。なので、 自分の用途に合わせて選ぶことになるかなと思いますが... Indeed! — Go (@golang) July 25, 2019 Go は文法がとてもシンプルです。 誰が書いても同じようなコードになるようなことを意識しているのかなと思われます。 それが元でよく Go を貶す記事が見受けられます。 Rust はコードが複雑になっても、ガシガシ書き込むような感じらしいです。その分だけ Go よりも高速に動作します。 Rustと競合? - Goへの誤解について (o

    nilab
    nilab 2020/01/05
    Rust なのか Go なのか | 民主主義に乾杯
  • 合成と委譲ってなに? | 民主主義に乾杯

    継承とはコードを共通化することです。 コードを共通化することの危険性を動画にして、大変わかりやすく記載されています。 以下の動画の「共通モジュール」を親クラスに読み換えると雰囲気が掴みやすいかなと思います。 「同じロジックのコードを2度以上書くな」と妄信する (opens new window) 同じようなパターンがプログラムの複数箇所に現れる場合、 それらを抽象化して一つの共通ロジックへのパラメータ渡しとして実装し、 それを複数箇所から呼び出すように実装すると、 プログラムコード量が小さくなり、 保守性が良くなったような気がするので、 未熟なプログラマが、なんでもかんでも共通ルーチン化しまくって、 非常に保守性の悪いプログラムにしてしまうことがある。 いつ継承で いつ合成を使うのか (とても、ざっくり) 内容継承合成

    nilab
    nilab 2019/12/26
    「継承は、簡単に実装できる反面、名前空間を継承した先のクラスと共有してしまい、責任の分解点が曖昧に」「Go や Rust にいたっては名前空間をごっちゃにしてしまう 継承という機能そのものを切ってしまっています」
  • 1