1. Links

2. Notes

References:

Iterators:

Closures:

Accessors (see also proxies):

Proxy:

Python decorators:

3. Summarized pros/cons

Pro Ruby Rebuttle from Python
Easy meta programming Adding methods to a class programmatically requires a lot more typing (thus it is discouraging) compared to Ruby
Ingrained uniform access, including metaprogamming helpers Python provides the "property" method, but has the same problem as with its inconvenient metaprogramming; Could be possible to write your own class that overrides __getattr__ and __setattr__ to provide some level of blanket uniform access
Can easily attach new methods to existing classes, including builtin classes like String and Float Two options: (1) write a function that lives outside the class but operates on its objects, (2) subclass or write a proxy
Ruby gems (CTAN for Ruby) makes getting new Ruby modules easy Although Python doesn't have such a system, one could argue that Debian and Gentoo mitigate this problem
Ruby has some really awesome modules/apps, like for time+date storage and string processing, Ruby on Rails, ... Python also has some neat modules like PyX
Real closures make it easy to transfer data between a callback function (iterator) and a context (the scope which defined the function) Python simulates closures by copying the context, but sometimes this is not as elegant when they need to return data back into the defining scope; An additional level of indirection (via a class, list, dict, ...) is necessary in such situations.
When debugging, hard to match messages with corresponding receiving objects
Pro Python Rebuttle from Ruby
List comprehensions Usually Ruby's iterators (which are *everywhere*) can get you the same end result. Sometimes they work out better than list comprehensions, and sometimes they don't
Modula-3 style modules make it very easy to create LARGE projects with virtually ZERO worry about stepping on the toes of other modules ...
Simple list slicing: [1:] means everything except the first item, [:-2] means everything except the last two items Ruby has two ways of instantiating ranges (which are similar to xrange in Python): (1) 0..2 expands to [0, 1, 2], and (2) 0...2 expands to [0, 1]; [1..-1] means everything except the first item, [0...-2] means everything except the last two items
Con Ruby ...and in Python?
Cannot overload some operators, such as and, or, ... Same deal (I think)

To be figured out:

Additional language desires: