为什么我无法在类的__init__中执行简单操作



下面给出的是一个类的片段,我正在尝试创建该类的对象,但出现了错误:

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认为你试图做的是两件事之一:

  1. 要么你试图引用一个名为filepath的全局变量——很明显,这不是你想要的
  2. 不太清楚的是,你还可以定义一个名为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')

不会产生错误。

你到底想做什么?

相关内容

  • 没有找到相关文章