TIL 21.05.17 python class


Python Repletteクラスを学ぶとき、内容が混乱しているため、いったん段階に入ると、概念を理解するために、整理します

print nameメソッドがselfである場合.nameを返すとdbの名前が返されます.

print nameメソッドがnameを返すと、関数呼び出し時の引数値が返されます.
課題の分析
Insertメソッド
質問条件:Fieldは格納するデータのフィールド名、valueは値
内部でディクシャナに保存する必要があります.
内部dictionaryの合計サイズがDatabaseクラスのsize属性より大きい場合は、新しい値を保存する必要はありません.

まず、最初のインスタンスにデータベースを割り当てるときに使用されるinit関数には、name、size変数があります.
インスタンスのクラスを割り当てるには、self以外の2つの変数を一緒に割り当てる必要があります.
db= Database("db", 3)
パラメータが不足し、インスタンスが割り当てられている場合は、入力パラメータが不足しているというエラーが発生します.

次に、insertメソッドは、内部にdictionaryが必要であることを示し、init実行時にdictionaryが作成されます.

次に、データベースのサイズを比較し、小さい場合にのみ入力します.
self.sizeと内部dicksherryのサイズを比較し、小さい場合は入力フィールド名のdicksherry値として受け入れられた値を内部dicksherry self.get()に追加する.(既存の値がdict[「field」]に対応していない場合は、新しい値が追加されます.)
  • サイズについて

    上記の画像では4つのinsertを試みたが,最終的には3つの結果しか得られなかった.4つ目はdbサイズを超えていて、入っていません.
  • 問題の選択
    条件:selectメソッドにはselfのほかにパラメータがあります.このフィールドの値に設定されていない場合は、Noneを返します.

    selectメソッドでは、入力したフィールドが内部ディックシーケンスに登録されていることを確認します.ない場合はNoneを返し、存在する場合はディックシャナリーが入力したフィールドをキーとして出力します.
    だからselect(「name」)は、内部ディックシリーズにnameをキーとする値を出力します.
    現在、内部ディック社には{「name」:「鄭雨盛」}があり、「name」を入力した「name」と同じフィールドがあり、その値は「鄭雨盛」である.
    問題の更新
    条件:2つのパラメータfieldvalue.フィールド値に対応するデータが格納されていない場合は、何も行われません.

    新しく入力した値を、内部ディクシャナフィールドと名前が同じキーに再割り当てします.(dictの「name」とパラメータ「name」を比較)
    既存の値を置換する概念の再割り当て
    再度Selectで調べてみると、既存のIUが鄭雨盛ではないことが確認できる.
    問題の削除

    最初のアクセスでは、値の代わりにスペースを使えばいいのではないかと思いましたが、出力されました-->これは完全に削除されていないと思います.

    他の人のコードを参照してdelを適用してください.そのため、結果はありません.(Nullの値を返します)-削除されました!

    静的メソッド/動的メソッド


    静的方法を理解すれば自然に動的方法が理解できる(反対の概念はもちろん?!
    静的メソッドは、インスタンスを受信するのではなく、クラス自体から呼び出されるメソッドです.
    簡単に言えば、個体ごとというより、そのレベルの性格を確認するための使い方です.

    表現はdecorator @staticmethodを対応する関数に適用する.
    また、多くの方法はクラスを得るためにselfまたは클래스의 이름を変数として関数に入れ、静的方法はこの変数を省略する.
    また、出力時もインスタンスにメソッドを適用するのではなく、클래스.methodで直接呼び出される.
    なぜ静寂という名前があるのか見てみましょう従来の方法はクラスに与えられた例によって変化するが,静的方法はクラス自体に適用されるため静的である.