私たちは、ときに、プロパティアクセスメソッドプロパティ機能を使用するためのPythonの構文が定義されている知っています:
属性の例=プロパティ(FGET =なし、FSET =なし、FDEL =なし、DOC =なし)
しかし@propertyデコレータにも同じ機能を実現することができますが、@propertyデコレータの要件は、この機能のためのプロパティへのアクセス方法、およびプロパティのドキュメントを取得する達成するためにゲッターデコレータを定義する必要がありますが必要とされていない、だけFGET、FSET、FDELが必要です有効があることができます。あなたがFGETを定義しない場合は何が起こりますか?簡単な例を見てみましょう:
>>> class Rectangle():
def __init__(self,length,width): self.width,self.__length = width,length
def setLen(self,length):
print("execute setLen")
self.__length=length
def getLen(self):
print("execute getLen")
return self.__length
len = property(None,setLen,None,'长方形的长')
>>> rect=Rectangle(10,5)
>>> rect.len
Traceback (most recent call last):
File "<pyshell#27>", line 1, in <module>
rect.len
AttributeError: unreadable attribute
>>> rect.len=15
execute setLen
>>>
あなたは上記のコードから見ることができ、FGETを設定することはできませんが、実行属性の読み取り属性を読み取ることができない場合に報告されます。
関連コンテンツが参照できる:
。1、「Pythonの属性のコードプロパティ関数定義された属性を使用してアクセス」
2、「Pythonのケース説明:属性アクセスコード実装のプロパティ関数定義された属性を使用して」
。3、「Pythonのケース説明:プロパティ関数を使用して定義されていますそして、同じ名前のインスタンス変数には、何が起こるか属性?「
4は、」Pythonのケース詳細:@propertyデコレータは、プロパティアクセス方法ゲッター、セッター、削除部「を定義
5、」詳細、セッターにパイソンをゲッタリングデリータを@Propertyデコレータは、プロパティアクセサメソッドを定義する
「6 」プロパティPython関数の使用をそして、@propertyデコレータを使用して類似点と相違点は、分析のプロパティアクセサメソッドを定義します。」
オールド猿Pythonは、古い猿でのPythonを学ぶ
ブログのアドレスをします。https://blog.csdn.net/LaoYuanPython
サポートしてください、親指をアップし、コメントや処理懸念!ありがとうございます!