So I'm just getting started with Python, and currently working my way through http://diveintopython3.ep.io/. The code examples are nice, but the vast majority of them are little four-line snippets, and I want to see a little more of the big picture.
As I understand it--and correct me if I'm wrong--each '.py' file becomes a "module", and a group of modules in a directory becomes a "package" (at least, it does if I create a __init__.py file in that directory). What is it if I don't have a __init__.py file?
So what does each "module" file look like? Do I generally define only one class in the file? Does anything else go in that file besides the class definition and maybe a handful of import commands?
3 Answers 3
What is it if I don't have a
__init__.pyfile?
It's just a folder.
Do I generally define only one class in the file?
It depends. Not necessarily.
Does anything else go in that file besides the class definition and maybe a handful of import commands?
You can put anything you want. Anything that's valid python at least.
7 Comments
bob that's just a series of functions. To use bob somewhere else, I import bob and then access those functions as bob.func_one(), bob.func_two() etc.? Or do I not need the bob. preceding the function names?import bob, then you need to need to call each function like the way you mentioned it: bob.func_one(), etc. If you do a : from bob import func_one, this imports only func_one from bob and you call it directly: func_one() without the bob prefix.Not really an answer, but it is always worth looking at the standard library to see how they use __init__.py in packages like sqlite3 vs. modules like SimpleHTTPServer
Comments
Falmarri answers it pretty well, but just to add:
__init__.py can be an empty file (and is usually is), but it can also execute initialization code for the package or set the __all__ variable.
2 Comments
__init__. Or put the code that you want to expose.