execution_context decorator throws error when used with Proxy (2.10.2)
Python is interpreted at runtime. When Python evaluates the class definition it sees `@database.execution_context()`. A decorator implies a function call and since the `database` is not bound at the time Python constructs the class, you get the error. Not an issue, just Python doing its thing.
Haven't dived too deep into this since the workaround is easy, but observed...

`models.py`
```python
from peewee import Model, Proxy

database = Proxy()

class MyObject(Model):
    id = CharField(primary_key=True)

    class Meta:
        database = database
```

`Wrapper.py`
```python
from src.models import database, MyObject


class Wrapper(object):
    @database.execution_context()
    def get_or_create_object(self):
        my_object = MyObject.get_or_create(id='1')
```

throws:

>   File "src/Wrapper.py", line 4, in DatabaseClientWrapper
    @database.execution_context()
  File "venv/lib/python3.6/site-packages/peewee.py", line 439, in __getattr__
    raise AttributeError('Cannot use uninitialized Proxy.')
AttributeError: Cannot use uninitialized Proxy.


Workaround is just:

`Wrapper.py`
```python
from src.models import database, MyObject


class Wrapper(object):
    def get_or_create_object(self):
        with database.execution_context():
            my_object = MyObject.get_or_create(id='1')
```

Maybe not worth fixing if it's just the conflicting nature of proxies vs. playing with decorators? Happy to take a shot at a PR if this is unintended
  