タグ付けされた質問 「descriptor」

7
__get__と__set__およびPython記述子について
私はPythonの記述子が何であり、それらが何に役立つのかを理解しようとしています。私はそれらがどのように機能するか理解していますが、ここに私の疑問があります。次のコードを検討してください。 class Celsius(object): def __init__(self, value=0.0): self.value = float(value) def __get__(self, instance, owner): return self.value def __set__(self, instance, value): self.value = float(value) class Temperature(object): celsius = Celsius() 記述子クラスが必要なのはなぜですか? 何であるinstanceとownerここに?(で__get__)。これらのパラメーターの目的は何ですか? この例をどのように呼び出し/使用しますか?
310 python  descriptor 

7
このプロパティが派生クラスで上書きされている場合、基本クラスのプロパティを呼び出すにはどうすればよいですか?
私のいくつかのクラスを、ゲッターとセッターの広範な使用から、プロパティのよりPython的な使用に変更しています。 しかし、以前のゲッターまたはセッターの一部が基本クラスの対応するメソッドを呼び出してから、別のことを実行するため、今は行き詰まっています。しかし、これはどのようにプロパティで達成できますか?親クラスでプロパティゲッターまたはセッターを呼び出す方法は? もちろん、属性自体を呼び出すだけで、無限の再帰が得られます。 class Foo(object): @property def bar(self): return 5 @bar.setter def bar(self, a): print a class FooBar(Foo): @property def bar(self): # return the same value # as in the base class return self.bar # --> recursion! @bar.setter def bar(self, c): # perform the same action # as in the …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.