実例を通して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方法のみが実現された場合は非データ記述子と呼ばれる。
delクラスのオブジェクト・属性(クラスのオブジェクト、属性)のステートメントを使うたびに、この方法が呼び出されます。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
本質的には、記述子はクラスですが、他のクラスの属性のアクセス方法を定義しています。言い換えれば、1つのクラスは、属性管理の全体権を記述子クラスに委託することができる。
ディスクリプタクラスは、以下の3つの特殊な方法に基づいて、言い換えれば、この3つの方法はディスクリプタプロトコルを構成する。
#
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クラスのオブジェクト・属性(クラスのオブジェクト、属性)のステートメントを使うたびに、この方法が呼び出されます。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。