def __getitem__(self, item):
if item == self.key_name:<EOL><INDENT>return self.key<EOL><DEDENT>return self._data[item]<EOL>
magic python method to make the object behave like a dictionary.
You can access data like so:

.. code-block:: python

    user = User('1')
    assert(user['name'] == 'bill')
    assert(user['_key'] == '1')

The primary key is also included in this.
If you have defined the name of the primary key, you use that name.
Otherwise it defaults to `_key`.

If the data doesn't exist in redis, it will raise a KeyError.
I thought about making it return None, but if you want that
behavior, use the `get` method.

:param item: the name of the element in the dictionary
:return: the value of the element.