Skip to content

superのルックアップの説明における誤訳 #1024

Description

@reccfw25

概要

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から検索を開始することを述べていますが、日本語訳ではABの順序が逆になっています。

修正案

それぞれ以下のように修正するといいかと思います。

...を探索して、 A の後の基底クラス B をまず探し、

...を探索して、 A の直後の基底クラス B をまず探し、

(「前」->「後」に変更し、抜けていた「基底」を追加する。)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions