classes in your modulessuch objects become reusable software components that can be accessed by name from one or more client modules in practicemodule files usually define more than one name to be used in and outside the files here' an example that defines threea 'deadb 'parrotc 'sketchprint(abcdefine three attributes exported to other files also used in this file (in xprint abcthis filethreenames pyassigns three variablesand so generates three attributes for the outside world it also uses its own three variables in print statementas we see when we run this as top-level file (in python print differs slightlyso omit its outer parenthesis to match the output here exactlywatch for more complete explanation of this in )python threenames py dead parrot sketch all of this file' code runs as usual the first time it is imported elsewhereby either an import or from clients of this file that use import get module with attributeswhile clients that use from get copies of the file' namespython import threenames dead parrot sketch threenames bthreenames ('parrot''sketch'from threenames import abc bc ('parrot''sketch'grab the whole moduleit runs here access its attributes copy multiple names out the results here are printed in parentheses because they are really tuples-- kind of object created by the comma in the inputs (and covered in the next part of this book--that you can safely ignore for now once you start coding modules with multiple names like thisthe built-in dir function starts to come in handy--you can use it to fetch list of all the names available inside module the following returns python list of strings in square brackets (we'll start studying lists in the next dir(threenames['__builtins__''__doc__''__file__''__name__''__package__'' '' '' 'the contents of this list have been edited here because they vary per python version the point to notice here is that when the dir function is called with the name of an imported module in parentheses like thisit returns all the attributes inside that module some of the names it returns are names you get "for free"names with leading and trailing double underscores (__x__are built-in names that are always predefined by how you run programs