<p>I've done some Python but have just now starting to use Ruby<br>
I could use a good explanation of the difference between "self" in these two languages.  </p>

<p><strong>Obvious on first glance:</strong><br>
Self is not a keyword in Python, but there is a "self-like" value no matter what you call it.<br>
Python methods receive self as an explicit argument, whereas Ruby does not.<br>
Ruby sometimes has methods explicitly defined as part of self using dot notation.</p>

<p><strong>Initial Googling reveals</strong><br>
<a href="http://rubylearning.com/satishtalim/ruby_self.html" rel="noreferrer">http://rubylearning.com/satishtalim/ruby_self.html</a><br>
<a href="http://www.ibiblio.org/g2swap/byteofpython/read/self.html" rel="noreferrer">http://www.ibiblio.org/g2swap/byteofpython/read/self.html</a>  </p>

Well, I don't know much about Ruby. But the obvious point about Python's "self" is that it's not a "keyword" ...it's just the name of an argument that's sent to your method.
You can use any name you like for this argument. "Self" is just a convention.
For example :
```
```
class X :
    def __init__(a,val) :
        a.x = val
    def p(b) :
        print b.x

x = X(6)
x.p()
```
```
Prints the number 6 on the terminal. In the constructor the self object is actually called a. But in the p() method, it's called b.
Update : In October 2008, Guido pointed out that having an explicit self was also necessary to allow Python decorators to be general enough to work on pure functions, methods or classmethods :
http://neopythonic.blogspot.com/2008/10/why-explicit-self-has-to-stay.html