0

私は作業を楽しんで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)かということです。

4

1 に答える 1