导入类时为什么会出现Name Error?

Kel*_*elp 5 python

我刚刚开始学习Python,但我已经遇到了一些错误.我创建了一个名为pythontest.py以下内容的文件:

class Fridge:
    """This class implements a fridge where ingredients can be added and removed individually
       or in groups"""
    def __init__(self, items={}):
        """Optionally pass in an initial dictionary of items"""
        if type(items) != type({}):
            raise TypeError("Fridge requires a dictionary but was given %s" % type(items))
        self.items = items
        return
Run Code Online (Sandbox Code Playgroud)

我想在交互式终端中创建一个新的类实例,所以我在终端中运行以下命令:python3

>> import pythontest
>> f = Fridge()
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'Fridge' is not defined
Run Code Online (Sandbox Code Playgroud)

交互式控制台找不到我制作的课程.但导入成功.没有错误.

Fal*_*rri 7

似乎没有人提到你能做到的

from pythontest import Fridge
Run Code Online (Sandbox Code Playgroud)

这样,您现在可以Fridge()直接在命名空间中调用,而无需使用通配符进行导入


Sil*_*ost 5

你需要做:

>>> import pythontest
>>> f = pythontest.Fridge()
Run Code Online (Sandbox Code Playgroud)

奖励:你的代码最好这样写:

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
Run Code Online (Sandbox Code Playgroud)