我正在学习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
答案 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
该怎么办是 从__________导入________ <----您叫什么变量?