Why Am I Getting Name Error When Importing A Class?
Solution 1:
No one seems to mention that you can do
from pythontest import Fridge
That way you can now call Fridge() directly in the namespace without importing using the wildcard
Solution 2:
You need to do:
>>> import pythontest
>>> f = pythontest.Fridge()
Bonus: your code would be better written like this:
def __init__(self, items=None):
    """Optionally pass in an initial dictionary of items"""
    if items is None:
         items = {}
    if not isinstance(items, dict):
        raise TypeError("Fridge requires a dictionary but was given %s" % type(items))
    self.items = items
Solution 3:
Try
import pythontest
f=pythontest.Fridge()
When you import pythontest, the variable name pythontest is added to the global namespace and is a reference to the module pythontest. To access objects in the pythontest namespace, you must preface their names with pythontest followed by a period. 
import pythontest the preferred way to import modules and access objects within the module.
from pythontest import *
should (almost) always be avoided. The only times when I think it is acceptable is when setting up variables inside a package's __init__, and when working within an interactive session. Among the reasons why from pythontest import * should be avoided is that it makes it difficult to know where variables came from. This makes debugging and maintaining code harder. It also doesn't assist mocking and unit-testing. import pythontest gives pythontest its own namespace. And as the Zen of Python says, "Namespaces are one honking great idea -- let's do more of those!"
Solution 4:
You're supposed to import the names, i.e., either
 import pythontest
 f= pythontest.Fridge()
or,
from pythontest import *
f = Fridge()
Post a Comment for "Why Am I Getting Name Error When Importing A Class?"