Dale Amon wrote:
....
The point I take away from this is that packages and
modules have dotted names, but Classes do not and there
is no way to do exactly what I wanted to do.
Nope.  You have not been clear with what you want, and part
of the lack of clarity is your imprecision about names.

If you insist on having a class per module, you will
always have redundant-looking class names somewhere.
You will help yourself out a lot by not sharing the class
name and the base class name (not the least in error
messages), but it is possible to have them the same.
If your module name, base class name, specialized name,
and derived class name are all the same, there are _way_
too many chances to confuse yourself about exactly what
you are talking about.
Assuming:
        VLMLegacy/
          __init__.py
          Reader.py        [defines class Reader]
          Conditions.py    [defines class Conditions]
          ...
          VLM4997/
            __init__.py
              Reader.py        [defines class Reader]
              Conditions.py    [defines class Conditions]
          WINGTL/
            __init__.py
            Conditions.py
              Reader.py        [defines class Reader]
              Conditions.py    [defines class Conditions]

After
    import VLMLegacy.Reader
    import VLM4997.Reader
There are four things named Reader:
    VLMLegacy.Reader        # A module
    VLMLegacy.Reader.Reader # A class
    VLM4997.Reader          # a module
    VLM4997.Reader.Reader   # a class

How I'd do it to "sort of" fit your style:

        VLMLegacy/
          __init__.py
          base_reader.py        [defines class BaseReader]
          base_conditions.py    [defines class BaseConditions]
          ...
          VLM4997/
            __init__.py
            reader.py        [defines class Reader]
            conditions.py    [defines class Conditions]
          WINGTL/
            __init__.py
            reader.py        [defines class Reader]
            conditions.py    [defines class Conditions]


I'd make the VLMLegacy/__init__.py file read:
    from VLMLegacy.base_reader import BaseReader
    from VLMLegacy.base_conditions import BaseConditions
    ...
I'd make VLM4997/reader.py read:
    import VLMLegacy
    class Reader(VLMLegacy.BaseReader):
        ...
I'd make VLM4997/__init__.py read:
    from VLMLegacy.VLM997.reader import Reader
    from VLMLegacy.VLM997.conditions import Conditions
    ...

The the consuming python code can do:
    import VLMLegacy.VLM997
    something = VLMLegacy.VLM997.Reader()
    ...

--Scott David Daniels
scott.dani...@acm.org
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to