Class Inheritance from different module

Peter Otten __peter__ at web.de
Sat Sep 20 11:48:57 EDT 2014


Juan Christian wrote:

> I have the following structure:
> 
> Third-party API installed via pip:
> steamapi /
> app.py
> consts.py
> core.py
> users.py
> [...]
> 
> My script:
> test.py
> 
> 
> In the API, the module users.py has a class 'SteamUser' and I want to
> mimic it's usage on my code, like this:
> 
> import steamapi
> 
> [...]
> 
> class User(Inheritance from API):
> def __init__(self, ID):
> steamapi.core.APIConnection(api_key = KEY)
> super( " Inheritance SteamUser" (ID)) # creates the user using the API
> 
> [...]
> 
> So that in my code when I need to create a new user, I just call 'usr =
> User("XXXXXXX")' instead of calling 'usr =
> steamapi.user.SteamUser(76561197996416028)', is that possible? 

Yes, it doesn't matter in what module a baseclass is defined. Just go ahead 
and import it:

# untested
import steamapi.user

class User(steamapi.user.User):
    def __init__(self, userid=None, userurl=None):
        super().__init__(userid, userurl)
        # code specific to you subclass

> And of
> course, I want to have access to all the class methods like 'name',
> 'country_code', 'time_created', 'avatar', 'friends' and so on. 

That's the very idea of subclassing.

> And finally, is that a good approach, pythonic? 

It depends ;) If you are planning only small adjustments it might be an 
option to write a few helper functions together with the original 
steamapi.user.User class and be done.

> If not, what would be a good way?

Generally speaking the Python community often favours duck-typing or 
composition over inheritance. I'm not prepared to go into a lengthy 
discussion over this -- if you are interested you have to try a search 
engine or rely on the usual suspects ;)




More information about the Python-list mailing list