codecraig wrote:
Hi,
  I have a question about how to define constants.

  My directory structure looks like...

C:\
    --> abc.py
    --> utils
        --> __init__.py
        --> CustomThing.py

  Ok, CustomThing looks like...

TOP = 0
LEFT = 1

class CustomThing:
    def __init__(self):
        self.foo = "foo"



  so, from abc.py I have

from utils.CustomThing import CustomThing

print CustomThing.TOP

but i get an error: AttributeError: class 'CustomThing' has no
attribute 'TOP'

How can I access those??

Note that TOP and LEFT are delcared in the *module* CustomThing, not the *class* CustomThing which is what you get if you do


    from utils.CustomThing import CustomThing # the *class*

You should probably write your code as something like:

    import utils.CustomThing
    print utils.CustomThing.TOP

and if you need to use the class, write:

    t = utils.CustomThing.CustomThing() # create a new CustomThing

Also, if you've just started this, it might be worth checking out PEP8[1] which suggests that modules "should have short, lowercase names, without underscores". If you're stuck with such a long module name, you might try:

    import utils.CustomThing as thing
    print thing.TOP
    t = thing.CustomThing()

STeVe

[1]http://www.python.org/peps/pep-0008.html
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to