Python分かりにくい

表面的にはさほど難しいように見えない。けれど、例えば適当なclassを作って、それに[2]をつけて配列的に呼び出したときに__getitem__が内部で処理されるようになっている、ということはそこらへんの解説書に書いてあるのだろうか?仕様をよく知っている人間にとっては書きやすいのかもしれないけれど、上記を例を含めて暗黙的なルールとなっている部分が多い気がする。ま、どの言語でもそういう部分が大なり小なりあるのかもしれないけれど・・・。