title: How can a module define a static property that is not shared between different classes that include it?
body: <p>If I define a module like this:</p>
  
  <pre><code>module M
     @@p = []
  
     def self.included( base )
        def base.add( a )
            @@p += a
        end
     end
  
     def show_p
         @@p
     end
  end
  </code></pre>
  
  <p>then every class that includes the module will have the same @@p array:</p>
  
  <pre><code>class A
     include M
  end
  class B
     include M
  end
  
  A.add "a"
  B.add "b"
  
  B.new.show_p
  
  ?&gt; ["a", "b"]
  </code></pre>
  
  <p>Is it possible to define a unique static property for each individual class that includes the module, so the classes don't interfere with each other? i.e. so I can do this:</p>
  
  <pre><code>A.add "a"
  B.add "b"
  
  A.new.show_p
  
  ?&gt; "a"
  
  B.new.show_p
  
  ?&gt; "b"
  </code></pre>
  
  <p>Thanks!</p>