Nils Werner
Nils Werner

Reputation: 36825

Mixing functions and subpackages in Python packages

Is there a way to mix subpackages and functions in my Python packages?

Currently, my layout is roughly like this:

lib/
   __init__.py
   Transform.py
   Statistic.py

where Transform.py and Statistic.py contain several functions each. To use them I do something like

from lib import Transform

Transform.fft(signal);

Now I would like to be able to have a function in a package inside Transform:

from lib.Transform import bins

Transform.bins.extent(signal);

Is that even possible? How would I have to define my packages to do that?

Upvotes: 1

Views: 188

Answers (1)

jsalonen
jsalonen

Reputation: 30531

Solution #1: Try the following layout:

lib/
  __init__.py
  Statistic.py
  Transform
    __init__.py
    bins.py

In this case Transform.fft goes inside lib/Transform/__init__.py and Transform.bins.extent inside lib/Transform/bins.py

Solution #2: If you wish to keep __init__.py short and clean, you can also create a separate Python-module (like fft.py) and import it in __init__.py as follows:

from fft import *

In which case you can also use:

from lib.Transform import fft

Upvotes: 1

Related Questions