1.Python 3でのproperty()関数学習
1830 ワード
Pythonはオブジェクト向けにプログラミングされた言語なので、クラス属性とその(付与、アクセス、削除、説明)は非常に重要な要素です.ネット上でこの関数の説明があるのを見て、彼らはすべて徹底的に話していないような気がします.以下、「Python基礎チュートリアル」9.5節のコードで説明します.
従来のプロパティメソッドクラス定義 属性設定とアクセス 問題 新しい記述プロパティ( この一連の属性を実現するには、property関数という別の方法があります.
プロパティ関数構築プロパティ新しいクラスの定義(文が1つしかない)
説明:の新しい記述属性( 構文は、新しいプロパティ=property(読み取り関数、設定関数、削除関数、ドキュメント関数)です.設定関数が指定されていない場合は、このプロパティは読み取り可能で書き込み不可です.読み取り関数もない場合は、このプロパティは読み取り不可です. 属性設定とアクセス
従来のプロパティメソッド
class Rectangle():
def __init__(self):
self.height = 0
self.width =0
def setSize(self,size):
self.height, self.width = size
def getSize(self):
return self.height,self.width
# size = property(getSize, setSize) #( : !!!)
myRect = Rectangle()
myRect.height = 100 # 1:
myRect.setSize(100,200)# 2:
height = myRect.height # 1:
height, width = myRect.getSize()# 2:
size = (height, width)
)を使用する必要がある場合は、どうすればいいですか?self.size
と対応するアクセサメソッドを再定義することはできますが、元に作成されたクラスは基本的に廃棄されます.size属性の付与、アクセス、削除、説明操作を再実現し、size、height、widthのデータ同期を処理し、頭が痛いからです.プロパティ関数構築プロパティ
class Rectangle():
def __init__(self):
self.height = 0
self.width =0
def setSize(self,size):
self.height, self.width = size
def getSize(self):
return self.height, self.width
size = property(getSize, setSize) #( : !!!)
説明:
size = (height, width)
)はproperty関数によって間接的に生成される.(.size)で設定してアクセスできます.myRect = Rectangle()
myRect.height = 100 # 1:
myRect.setSize(100,200)# 2:
height = myRect.height # 1:
height, width = myRect.getSize()# 2:
myRect.size = (100,200) # property
size = myRect.size #