6

私は Counter クラスの __init__ メソッドを読んでいて、これを見ました:

if not args:
    TypeError("descriptor '__init__' of 'Counter' object "
              "needs an argument")

記述子が何を意味するのかわからなかったので、Pythonデータモデルのドキュメントを確認したところ、次のことがわかりました。

一般に、記述子は「バインディング動作」を持つオブジェクト属性であり、その属性アクセスは記述子プロトコルのメソッドによってオーバーライドされています: __get__()、__set__()、および __delete__()。これらのメソッドのいずれかがオブジェクトに対して定義されている場合、それは記述子と呼ばれます。

これらのメソッドはいずれもクラス定義に存在しないようですが、なぜ __init_ は記述子と呼ばれるのでしょうか?

4

1 に答える 1