トップレベルでは main という特殊なオブジェクトが self。
irb で self と打ってみれば分かる。

2行目の print は main の private method。
private method はレシーバを省略した形でしか記述できないので、
あたかも関数呼び出しのようになる。

クラス定義の文脈ではクラスが self。
>>275 氏ので二種類が同じ働きをするのを見れば分かると思う。

メソッド定義の文脈ではインスタンスが self。