Нет, это невозможно. Вызов метода без явного приемника имеет неявный приемник self
, поэтому для того, чтобы сделать method1
, необходимо позвонить по номеру MyModule.method1
, self
необходимо изменить на MyModule
. Это довольно легко, в конце концов, вот что такое instance_eval
и instance_exec
.
Однако переменные экземпляра также относятся к self
, поэтому в конце концов они называются экземплярами. Итак, если вы измените self
на MyModule
, то @m1
, @m2
и т. Д. Также будут принадлежать MyModule
и больше не принадлежат тому объекту, к которому они принадлежат в вашем примере кода.
Другими словами, вам нужно self
изменить, но вам также необходимо self
не менять. Это противоречие, эрго, то, что вы хотите, невозможно.