Submission of Assignment 02

I think we've already discussed this but just to be clear, when you do `from X import Y` you copy `Y` from `X` and make a reference to it in the current module. `Y` is then accessible as a variable, eg:

    from X import Y
    someclass = Y('some value')

Conversely, `import X` makes `X` accessible but since `X` contains `Y`, you can access `Y` *through* `X` using a dot `.`. It's a bit like a nesting doll:

    import X
    someclass = X.Y('some value')

We generally prefer the latter form since module names could get in each other's way. Let's say we have two modules, `X` and `Z` and *both* have a `Y` class, consider this:

    from `X` import `Y`
    from `Z` import `Y`
    someclass = Y('some value')

Now, which `Y` is being used above? Is it `X.Y` or `Z.Y`? Pretty confusing, right? So, while not a hard rule, we prefer the straight import not the `from` import. Using both however is really quite redundant.