下面给出的是我正在尝试创建对象并收到错误的类的片段:
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
导致错误的原因是什么?如何解决?
答案 0 :(得分:2)
尝试使用全局特殊字self
。
这样的事情
class FoF(object):
def __init__(self,path):
self.filepath=[]
self.filepath.append(self.FileOrFolder(path))
出现此错误的原因是因为python认为您尝试做的是两件事之一:
因此,为了在函数中声明变量,你必须在它之前使用单词self。
编辑**如果你想让它成为班级的一个属性 - 正如我所说的那样你的意思是你可以这样做:
class FoF(object):
filepath=[]
def __init__(self,path):
self.filepath.append(self.FileOrFolder(path))
答案 1 :(得分:0)
我认为你没有给我们足够的信息。例如:
>>> class FoF(object):
... def __init__(self, path):
... junk = []
... junk.append(path)
...
>>> foo = FoF('bar/path')
不会产生错误。
你究竟想做什么?