0

我正在使用 fusepy ( http://code.google.com/p/fusepy/source/browse/trunk/memory.py ) 中的 memory.py 进行编程作业。

setxattr(第 87 行)实际上是如何完成任何事情的?self.files 不会以任何方式修改,并且 attrs 在函数退出时被销毁。

4

1 回答 1

1
def setxattr(self, path, name, value, options, position=0):
    # Ignore options
    attrs = self.files[path].setdefault('attrs', {})
    attrs[name] = value

副作用是通过 来实现的setdefault,它会在其中创建一个新项目self.files[path](除非其中attrs已经作为键存在),并返回对该值的引用

接下来,通过为其键分配name值来修改该引用value。也通过那个操作,self.files被修改。

于 2013-10-25T19:25:29.107 回答