**Disclaimer:** this is perhaps a quite subjective question with no 'right' answer but I'd appreciate any feedback on best-practices and program design. So here goes:

I am writing a library where text files are read into `Text` objects. Now these might be initialized with a list of file-names or directly with a list of `Sentence` objects. I am wondering what the best / most Pythonic way to do this might be because, if I understand correctly, Python doesn't directly support method overloading.

One example I found in `Scikit-Learn`'s [feature extraction module](http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html) simply passes the type of the input as an argument while initializing the object. I assume that once this parameter is set it's just a matter of handling the different cases internally:

```
if input == 'filename':
    # glob and read files
elif input == 'content':
    # do something else

```

While this is easy to implement, it doesn't look like a very elegant solution. So I am wondering if there is a better way to handle multiple types of inputs to initialize a class that I am overlooking.