私は作業を楽しんでattr
おり、ソース コードの一部を読むことにしました。私の目を引いたのは、次の部分でした(source):
# Cache this descriptor here to speed things up later.
bound_setattr = _obj_setattr.__get__(self, Attribute)
# Despite the big red warning, people *do* instantiate `Attribute`
# themselves.
bound_setattr("name", name)
bound_setattr("default", default)
bound_setattr("validator", validator)
ここで_obj_setattr
は として定義されobject.__setattr__
ます。
なぜこれが行われるのか、私は興味があります。私はこのスタックオーバーフローの応答を読み、非常に便利だと思いましたが、__get__
. 私は少し読んだことがありますdescriptors
が、それらについて頭を完全に包んでいません. それで、私の質問は、なぜ では_obj_setattr.__get__(self, A)("name", name)
なく を使用するのobject.__setattr__(self, "name", name)
かということです。