类名未定义

时间:2019-07-05 12:36:23

标签: python

我正在学习Python,但遇到了问题。

我创建了一个类,当我实例化它时,Python表示尚未定义。

这是我的代码。

我的课程dirNode,位于文件dirTree.py中:

class dirNode:
    'Represente a directory of a files system'

    # Create an instance of the class
    def __init__(self, path, name, parent=None):
        self.path=path
        self.name=name
        self.nbDir=0
        self.nbFile=0
        if parent is not None:
            self.parent=parent
        else:
            self.parent=None


    # Add a sub-directory
    def addDir(self, name, dirNode):
        self.dirs[name]=dirNode
        self.nbDir+=1

    # Print the number of sub-directory
    def printDirCount(self):
        print self.nbDir


    # Add a file
    def addFile(self, name, fileNode):
        self.files[name]=fileNode
        self.nbFile+=1

    # Print the number of files
    def printFilesCount(self):
        print self.nbFile

这是我的“主要”代码:

#! /usr/bin/python
# -*- coding: utf-8 -*-

import os
import sys
import dirTree


direct=sys.argv[1]
isRoot=1

print direct

for root, dirs, files in os.walk(direct):
    if (isRoot==1):
        rootDir=dirNode(root, root)
        curDir=rootDir
        isRoot=0
    else:
        parent=curDir
        curDir=dirNode(root, root, parent)

    for name in dirs:
        print "foo"

这是Python所说的:

$./test.py datas/
datas/
Traceback (most recent call last):
  File "./test.py", line 78, in <module>
    rootDir=dirNode(root, root)
NameError: name 'dirNode' is not defined

4 个答案:

答案 0 :(得分:1)

您要导入模块dirTree,而不是类dirNode本身。

尝试将导入更改为from dirTree import dirNode。另外,您可以通过执行dirtree.dirNode(...)来实例化该类,但是我不建议您使用该类(有关更多说明,请参见下面的评论)。

最后,请确保您的类__init__方法中的代码正确缩进(不确定在将其粘贴到此处时它是否真的断了):)

答案 1 :(得分:0)

我想您的班级和主要不在同一个文件中。如果是这种情况,则需要将您的类导入主文件from dirTree import dirNode

答案 2 :(得分:0)

您必须这样做:

rootDir = dirTree.dirNode(root, root)

或保持原样,然后将导入语句更改为:

from dirTree import dirNode

答案 3 :(得分:0)

from dirTree import dirNode

该怎么办是 从__________导入________ <----您叫什么变量?