我正在使用 fusepy ( http://code.google.com/p/fusepy/source/browse/trunk/memory.py ) 中的 memory.py 进行编程作业。
setxattr(第 87 行)实际上是如何完成任何事情的?self.files 不会以任何方式修改,并且 attrs 在函数退出时被销毁。
我正在使用 fusepy ( http://code.google.com/p/fusepy/source/browse/trunk/memory.py ) 中的 memory.py 进行编程作业。
setxattr(第 87 行)实际上是如何完成任何事情的?self.files 不会以任何方式修改,并且 attrs 在函数退出时被销毁。
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
被修改。