为什么我不能在我的类的初始化中执行一个简单的操作?

2024-10-01 09:22:32 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我试图创建对象并得到错误的类的一个片段:

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

是什么导致了错误?如何修复错误?你知道吗


Tags: pathinselfobjectinitdef错误line
2条回答

我认为你没有给我们足够的信息。例如:

>>> class FoF(object):
...     def __init__(self, path):
...             junk = []
...             junk.append(path)
... 
>>> foo = FoF('bar/path')

不会产生错误。你知道吗

你到底想做什么?你知道吗

试着用global代替这个特殊的词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))

相关问题 更多 >