That seems very weird to me. I understand why you do that, but it just doesn't feel right. Could you have this method be ``_post`` or something and do:

```python
def post(self, url, payload):
    return self._post(self, url, payload, method='post')

def put(self, url, payload):
    return self._post(self, url, payload, method='put')
```

Then you can do
```python
return self.put(self.URL_PREFIX, payload)
```
instead of 
```python
return self.post(self.URL_PREFIX, payload, method='put')
``` 
That's easier to read and more coherent, I think.