実例を通してpython記述子の原理作用を解析します。


この文章は主に実例を通してpython記述子の原理作用を解析して紹介しています。ここでは例示的なコードを通して紹介された非常に詳細で、皆さんの学習や仕事に対して一定の参考学習価値を持っています。必要な友達は下記を参照してください。
本質的には、記述子はクラスですが、他のクラスの属性のアクセス方法を定義しています。言い換えれば、1つのクラスは、属性管理の全体権を記述子クラスに委託することができる。
ディスクリプタクラスは、以下の3つの特殊な方法に基づいて、言い換えれば、この3つの方法はディスクリプタプロトコルを構成する。
  • _u u_set_self,obj,type=None):属性を設定すると、この方法が呼び出されます。
  • _u u_get_.self,obj,value):属性を読み出す時にこの方法を呼び出します。
  • _u u_delete_(u)self,obj):プロパティにdelを呼び出すと、この方法が呼び出されます。
  • ここで、setterおよびgetter方法を実現した記述子は、データ記述子と呼ばれ、逆にgetter方法のみが実現された場合は非データ記述子と呼ばれる。
    
    #    
    class revealAccess:
      def __init__(self, initval = None, name = 'var'):
        self.val = initval
        self.name = name
      def __get__(self, obj, objtype):
        print("Retrieving", self.name)
        return self.val
      def __set__(self, obj, val):
        print("updating", self.name)
        self.val = val
    
    class myClass:
      x = revelAccess(10, 'var "x"')
      y = 5
    m = myClass()
    print(m.x)
    m.x = 20
    print(m.x)
    print(m.y)
    
    Retrieving var "x"
    10
    updating var "x"
    Retrieving var "x"
    20
    5
    クラスのいずれかの属性にデータの記述子がある場合、この属性を検索するたびに、記述子の__u u()を呼び出します。get_()方法を選択し、値を返します。同様に属性に対して値を賦課するたびに、___u uset_()方法。
    delクラスのオブジェクト・属性(クラスのオブジェクト、属性)のステートメントを使うたびに、この方法が呼び出されます。
    以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。