概要
superのルックアップの説明の中で、MROにおけるクラスの前後関係が逆になっている。
問題のある箇所 (URLで指定すること)
https://docs.python.org/ja/3/reference/datamodel.html#invoking-descriptors
super(A, a).x のようなドットを使ったルックアップは a.__class__.__mro__ を探索して、 A の前のクラス B をまず探し、
https://docs.python.org/ja/3/howto/descriptor.html#invocation-from-super
super(A, obj).m のようなドットを使ったルックアップは obj.__class__.__mro__ を探索して、 A の直前のクラス B をまず探し、
問題の詳細
原文の対応する部分はそれぞれ
https://docs.python.org/3/reference/datamodel.html#invoking-descriptors
A dotted lookup such as super(A, a).x searches a.__class__.__mro__ for a base class B following A
https://docs.python.org/3/howto/descriptor.html#invocation-from-super
A dotted lookup such as super(A, obj).m searches obj.__class__.__mro__ for the base class B immediately following A
です。これらはsuper(A, obj)のルックアップがMROにおいてAの直後である基底クラスBから検索を開始することを述べていますが、日本語訳ではAとBの順序が逆になっています。
修正案
それぞれ以下のように修正するといいかと思います。
...を探索して、 A の後の基底クラス B をまず探し、
...を探索して、 A の直後の基底クラス B をまず探し、
(「前」->「後」に変更し、抜けていた「基底」を追加する。)
概要
superのルックアップの説明の中で、MROにおけるクラスの前後関係が逆になっている。問題のある箇所 (URLで指定すること)
https://docs.python.org/ja/3/reference/datamodel.html#invoking-descriptors
https://docs.python.org/ja/3/howto/descriptor.html#invocation-from-super
問題の詳細
原文の対応する部分はそれぞれ
https://docs.python.org/3/reference/datamodel.html#invoking-descriptors
https://docs.python.org/3/howto/descriptor.html#invocation-from-super
です。これらは
super(A, obj)のルックアップがMROにおいてAの直後である基底クラスBから検索を開始することを述べていますが、日本語訳ではAとBの順序が逆になっています。修正案
それぞれ以下のように修正するといいかと思います。
(「前」->「後」に変更し、抜けていた「基底」を追加する。)