メソッドの中に def 宣言を置くのは、文法的には valid だよ。
そのメソッドを一回呼び出すと、内部で宣言したメソッドが当該クラスに追加
される、という挙動になる。ので、外からも呼べるようになるので、メソッド
内メソッドではないというだけ。

ああいうのが欲しくなったときは、仕方ないので lambda とかを使っている。