読者です 読者をやめる 読者になる 読者になる

Pythonのディスクリプタがわかった

なんとなくしっくり来なかったPythonディスクリプタであったが、このコードで悟った。
クラスとインスタンスがどう実装されているのか把握した。

class Foo:
    def do1(self):
        print('you called do1 with:', self)

f = Foo()
f.do1()  # you called do1 with: <__main__.Foo object at 0x018A18B0>

def do2(self):
    print('you called do2 with:', self)

do2.__get__(f)()  # you called do2 with: <__main__.Foo object at 0x018A18B0>

よくよく考えると、これは当たり前のことであって、何で今までしっくり来なかったのか不思議なくらいだ。