タグ

oopに関するanimistのブックマーク (7)

  • Python基礎講座(13 クラス) - Qiita

    class Spam: val = 100 def ham(self): self.egg('call method') def egg(self,msg): print("{0}".format(msg)) print(("{0}".format(self.val))) spam = Spam() spam.ham() 結果は以下になります。 call method 100 Pythonではクラスはclass クラス名 :で作成します。クラス名の先頭は大文字です。 クラス変数とクラス内関数(=メソッド)は字下げを使用して定義します。 オブジェクトは オブジェクト = クラス() で生成します。 メソッドは オブジェクト.メソッド()で呼び出します。 上記のプログラムを日語で説明すると クラスSpamのオブジェクトspamを生成します spamオブジェクトがhamメソッドを呼び出します

    Python基礎講座(13 クラス) - Qiita
  • Pythonのクラスでコンストラクタを使う方法【初心者向け】

    オブジェクトの設計書のような役割です。オブジェクトにどのような機能があるか記述されています。 オブジェクト インスタンスとも呼ばれます。クラスをもとに実体化してプログラムで使えるようにしたものがオブジェクトです。Python では、全てがオブジェクトです。 クラスとオブジェクトを使うと、プログラムを分かりやすく記述することが出来ます。Python では全てがオブジェクトとして扱われますので、クラスとオブジェクトの考え方は必ず理解しておきましょう。詳細は公式ドキュメントやチュートリアルを参考にしてください。 公式ドキュメント https://docs.python.jp/3/reference/compound_stmts.html#class-definitions チュートリアル https://docs.python.jp/3/tutorial/classes.html コンストラクタ

    Pythonのクラスでコンストラクタを使う方法【初心者向け】
  • Pythonではインスタンス変数をクラス定義直下に書いてはいけない(戒め) - Qiita

    TL;DR インスタンス変数のつもりでクラス直下に変数を定義すると事故る場合がある 同一プロセス内でクラスがインスタンス化されるのが2回目以降、かつ変数がミュータブルな型である場合に事故る インスタンス変数は__init__内で初期化すると良い これにまつわる根の動作はまだ理解できていない 事の顛末 Pythonでマルチスレッドで動くコードを書いていた際、別々のスレッド同士でlistの中身が混ざり合うことがありました。 Pythonを書いていながら私は静的型付け言語が好みなもので、JavaSwiftでそうするように変数の名前と型を先に書いておいたのです。 再現 ここでは、メソッドの引数に指定された整数たちを奇数と偶数のリストに振り分けて格納する、という例を用います。 from typing import List class OddAndEven: odds: List[int] =

    Pythonではインスタンス変数をクラス定義直下に書いてはいけない(戒め) - Qiita
  • DI・DIコンテナ、ちゃんと理解出来てる・・? - Qiita

    意外と分からずに、「とりあえず」とか「なんとなく」で使っちゃうパターンが多い系案件な気がして書いてみます。 こんな事ありませんか? DIとDIコンテナの違いを説明出来ない DIとサービスロケータの違いを説明出来ない DIを使ってるつもりが、サービスロケータになっている DI、サービスロケータが、ただの「パターン」の1つであることを理解してない DI(Dependency Injection)を正しく理解する そもそも、Dependeny Injectionを日語にするとどういう意味になるでしょうか。 多くの人が「依存性の注入」とか応えるのではないでしょうか? 私もそうでした。きっと何かで読んだのでしょう。 (wikipediaに「依存性の注入」と書いてありますね) 補足 なぜ依存性を注入してあげると良いのか、そのメリット等は後述しますが、 DIというのはただのパターンの1つです。 たまに

    DI・DIコンテナ、ちゃんと理解出来てる・・? - Qiita
    animist
    animist 2018/01/18
    この解説はわかりやすかった。アンチパターンも入れてもらえるとそういう事かってなる
  • openFrameworksで、オブジェクト指向プログラミング(OOP) 後編

    オブジェクトの生成とメモリ openFrameworksの入門の授業の際に、変数を定義するということは、値を入れる「箱」のようなものを用意することだと説明しました。また、前回の授業では、オブジェクトを実体化するにはまずクラスをインスタンス化する必要があるという説明をしました。 実はクラスのインスタンス化と、変数の宣言は質的には同じことをしています。それは、「値や動作を表現するための記憶域を確保する」ということです。int型やfloat型などの宣言に関しても、型からオブジェクトを生成しています。 コンピュータの中では、個々の箱は独立して存在するのではなく、コンピュータに内蔵された広大な記憶領域の中の一部分を使用しています。多くのオブジェクトがこの記憶域を共有して雑居しています。そのため、個々のオブジェクトの格納されている「場所」を表す必要が出てきます。コンピュータではこのオブジェクトが格納

    openFrameworksで、オブジェクト指向プログラミング(OOP) 後編
  • Rails、あんたなんか嫌いよ - Rails での OO 設計について - tomykaira makes love with codes

    2013-06-25 Rails、あんたなんか嫌いよ - Rails での OO 設計について ruby rails 最近はずっと Rails 書いてるんですが、書けば書くほど嫌いになってくるんです。 倦怠期的なやつなんですが、 Rails さんの悪いところばっかり見えてきて、もう一緒にいたくないんです。 でも別れるほどじゃないし… という愚痴にみせかけた Rails での設計についての議論です。 長いけどコードは一切出てこないので通勤中にでもよんでください。 注意 一部にはげしい言葉遣いがでてくるので、読んで不快になるかもしれません。 不快になったとしても責任は負いかねます。 次のような方の期待に沿う結論はでません。残念でした。 Sinatra, Padrino の人 関数型の人 静的型付けの人 C の人 TL;DR Rails にだまされない。 自分の道を見定める。 欺瞞にみちた Ra

    animist
    animist 2013/06/26
    真剣に書く 「この機能必要だから とりあえずテスト書こう ここにこんな感じで書いてみるか あ、動いた よっしゃー終わり」 これはプロフェッショナルの開発ではありません。
  • OOP についていろいろ考えて途中まで文章書いたけど面倒になってリンク集にした - m2

    <元ネタ> 実はオブジェクト指向ってしっくりこないんです!:気分はstatic!:エンジニアライフ 2010/4/30 引用を追加 Microsoft previous versions of technical documentation | Microsoft Docs http://nakayalog.net/?p=63 ・アクセス方法を制限する事により、オブジェクトがより独立したものとなる ・セットした値の妥当な値かをオブジェクト内でチェックしたり、変更したりできるので、望まない値が変数に格納されない ・そういう「作法」を作っておくと、大規模開発でもみんなが同じ作法でコードを書く事ができる ・外部に公開されていることを明示化できる ・ReadOnly アクセスレベルが指定できる データ構造はクラスに任せた!だから、アルゴリズムはstatic関数で書くぜ!!(キリッ - みねこあ 普

    OOP についていろいろ考えて途中まで文章書いたけど面倒になってリンク集にした - m2
  • 1