pythonオブジェクト向けまとめ


一、対象に向けた総括と整理
1.1対象とは、
                   オブジェクト向けは一種の思想となり、複数のオブジェクトが互いに協力して機能処理プロセスを完成するプログラミング構想であり、コア処理過程において、主にクラスの宣言定義、オブジェクトの作成使用、オブジェクト向けの特徴に分けられる【三大特徴:封止、継承、多態】
 
1.2クラスとオブジェクトとは
         クラス:タイプの略称は、データ型の略称であり、呼び方、コード、物事の抽象化された名前である.
オブジェクトおぶじぇくと:ソリッド、オブジェクトそりっど、おぶじぇくと
 
1.3クラスの宣言構文と注意事項
         クラスの宣言構文:
                   classクラス名【注意:クラス名頭文字大文字】:     
                            「」「コメント」
                            def __init__(self, name):      name属性形式パラメータ  複数のパラメータを使用できます
                                     self.name = name     クラスのプロパティ
                            defメソッド名(self):
                                     「」クラスのメソッド」
1.4オブジェクトの作成構文と注意事項
オブジェクトの作成
         オブジェクト名=クラス名(クラスの各種属性の実際のパラメータ)    # 実際のパラメータは必ず順番に実際のパラメータを書くには形式パラメータの個数と同じでなければならない.
1.5オブジェクトの操作属性
         オブジェクト名.name
1.6オブジェクト呼び出し方法
         オブジェクト名.メソッド名()
1.7クラスとオブジェクトの違い
         抽象的な物事のアセンブリを分類する
         オブジェクトは実際に存在する物体です
二、オブジェクト向けパッケージの意義
プライバシー・データ/機密データの保護であり、現在のオブジェクトの属性データに外部から直接アクセスすることを許さず、提供されたアクセス・メソッドによってアクセスし、メソッドに制限アクセス条件を追加する.
 
2.1パッケージの操作手順
(1).すべての属性を私有化する【2つの下線の先頭を使用して、この属性が私有であることを説明し、外部から直接アクセスできない】
    (2).属性ごとにset/getアクセス方法を提供する
    (3).アクセス方法においてアクセス制限を追加し、データセキュリティを保護することができる
 
2.2パッケージの注意事項
         カプセル化後、オブジェクトのプロパティに直接アクセスしないでください.
2.3パッケージ化後の問題点と解決策
誤区1:どのような属性がカプセル化されるべきですか?パッケージ化する場合、アクセス制限を追加する必要がありますか?
               (1)定義されたデータ型を異なる適用シーンで使用できるようにするために,現在のタイプのすべての属性をカプセル化する.
(2)属性をカプセル化すると,属性データにアクセスするset/getメソッドが提供され,開発中にメソッドに制限条件を追加する必要はなく,制限条件を追加できるメソッドが予約されているだけで,後期にはプロジェクトのニーズに応じて制限条件の整備が行われる.
 
エラー2:プライベート属性、直接アクセスできません
    プライベート属性を定義しました.2つの下線の先頭の属性です.
    理論的には外部から直接アクセスするのではなく、私たちが提供したset/getメソッドを通じて間接的にアクセスします.
   
    機能開発の過程で、コードと機能にいくつかの問題がある可能性があります.
        もし問題が発見されたら~私的に修正するのではなく、タイムリーにコミュニケーションしなければならない.
三、対象に向かって受け継ぐ意味
3.1継承された基本構文
classタイプ名(継承するタイプ):
        pass
3.2継承された操作手順
 
3.3継承中の方法を書き直すとはどういう意味ですか.どうやって操作しますか?
子クラスで親クラスから継承するメソッドを再定義できます【メソッド名とメソッドパラメータが一致します】:メソッド書き換え
        メソッド書き換えメソッド書き換え:子クラスに親クラスにすでに存在するメソッドを書き換える
            実行中~サブクラスにメソッドが書き換えられた場合、サブクラスのメソッドが実行され、書き換えがなければ親クラスのメソッドが実行されます【実行中の複数のステータス切り替え:実行時マルチステート】
 
3.4継承時に親からデフォルトで継承されるメソッドは何ですか?
                   親クラスのプロパティとメソッドを継承し、プライベートメソッドは継承しません.
3.5二重下線の先頭と末尾の方法:タイプの魔法方法
__new__  オブジェクトの作成方法   一般に、~を使用せずに親から直接オブジェクトを作成できます.
    __init__ データの初期化方法  オブジェクトデータを初期化するためのメソッドは一般的に書き換えられます
 
    __slots__ カプセル化時、属性の
 
    __str__ オブジェクト文字の印刷方法;デフォルトの印刷メモリの16進数の位置
    __repr__ インタラクティブモードでの文字印刷
 
    __hash__ オブジェクトのhashデータを取得し、判断の根拠とする
    __ne__ 等しくない:not equals;2つのオブジェクトを使用!=判断する
    __ge__ 以上:grant or equals  判断>=
    __gt__ より大きい:grant than判断>
    __le__ 以下:less or equals判定<=
    __lt__ less than判定未満<
    __eq__ 判定はequals判定に等しい==
 
    __dict__ オブジェクトを辞書に変換
    __doc__ 説明ドキュメント
__class__ タイプ.type 3.6 pythonのマルチ継承操作構文に似ています.
classクラス名(クラス名1,クラス名2,クラス名3...)
3.7継承の意味
1つのオブジェクトが異なるシーンで、異なる役割を果たす可能性があります.
 
3.8マルチ継承メソッドクエリー順序
python 3には新しいクラスがあります.広さが優先され、親クラスから対応するメソッドがクエリーされ、最初に満たされたメソッドにクエリーされた後、直接戻ります.
python 2のクラシッククラス:深さ優先
四、二つの多態の実現方式をまとめる.
     4.1運転時マルチステート
class Son:

    def xiao_shun(self):
        print("     ")


class Student:

    def xue_xi(self):
        print("    ,    ")


class Friend:

    def play(self):
        print("    .....")


class Person(Son, Student, Friend):
    """    :    、  、  """
    pass


p = Person()
#     
if isinstance(p, Son):
    p.xiao_shun()

#      
if isinstance(p, Student):
    p.xue_xi()

#   
if isinstance(p, Friend):
    p.play()


def xue_tang(person):
    #       ,        
    if isinstance(person, Student):
        # person.play()
        person.xue_xi()


xue_tang(p)

4.2設計時の多態
class Person:
	def __init__(self, name, age):
	    self.name  = name
	    self.age = age
	def play(self):
	    if self.age <= 18:
		print(“    ”)
	    elif 18 < self.age  <=60:
		print(“    ”)
	    else:
		print(“    ”)

多態~はパッケージや継承とは異なり,固定的な文法がなく,固定的な考え方がなく,操作の仕方しかない.