下面给出的是一个类的片段,我正在尝试创建该类的对象,但出现了错误:
class FoF(object):
def __init__(self,path):
filepath=[]
filepath.append(self.FileOrFolder(path))
执行后,我得到以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "PathOps.py", line 6, in __init__
def __init__(self,path):
NameError: global name 'filepath' is not defined
之后我尝试了:
filepath=[]
class FoF(object):
def __init__(self,path):
global filepath.append(self.FileOrFolder(path))
再说一遍:
File "<stdin>", line 1, in <module>
File "PathOps.py", line 6, in __init__
global filepath.append(self.FileOrFolder(path))
NameError: global name 'filepath' is not defined
错误的原因是什么?我该如何修复?
尝试在全局中使用特殊单词self
。
所以像这个
class FoF(object):
def __init__(self,path):
self.filepath=[]
self.filepath.append(self.FileOrFolder(path))
出现这个错误的原因是python认为你试图做的是两件事之一:
- 要么你试图引用一个名为filepath的全局变量——很明显,这不是你想要的
- 不太清楚的是,你还可以定义一个名为filepath的类属性——唯一的问题是,你不能用该类的函数定义一个类属性。您只能在类内--在类函数外执行此操作
因此,为了在函数中声明变量,您必须在函数前面使用单词self
编辑**,如果你想让它成为类的一个属性——我想这就是你的意思——你可以这样做:
class FoF(object):
filepath=[]
def __init__(self,path):
self.filepath.append(self.FileOrFolder(path))
我认为你没有给我们足够的信息。例如:
>>> class FoF(object):
... def __init__(self, path):
... junk = []
... junk.append(path)
...
>>> foo = FoF('bar/path')
不会产生错误。
你到底想做什么?