题
我有一个python保险丝项目的基础上的回馈的例子的保险丝文件。我已经包括了小块的代码显示是如何运作的。由于某些原因get_file没有得到所谓的和类被创造,但不是保险丝呼唤。read()上级的从get_file(file_class)保险丝呼唤Dstorage.read()其击败的目的在移动的阅读功能的这一类。
class Dstorage(Fuse, Distributor):
def get_file(self, server, path, flags, *mode):
pass
# This does some work and passes back an instance of
# a class very similar to XmpFile
def main(self, *a, **kw):
self.file_class = self.get_file
return Fuse.main(self, *a, **kw)
我有我的代码托管快速启动,可以下载有这一命令。
开始有限 https://code.launchpad.net/~asa-ayers/+垃圾/dstorage
开始支lp:~asa-ayers/dstorage/干
方案:
我用一个代理类子类的一个,我需要和在构造我得到的实例之类我需要复盖所有代理的方法简单地呼吁实例的方法。
解决方案
看码的保险丝类(这是一个迷宫的曲折的小道创建方法代理),我认为这位(它是关闭用来创建一个器内部 Fuse.MethodProxy._add_class_type
, 线865):
def setter(self, xcls):
setattr(self, type + '_class', xcls)
for m in inits:
self.mdic[m] = xcls
for m in proxied:
if hasattr(xcls, m):
self.mdic[m] = self.proxyclass(m)
当你这样做 self.file_class = self.get_file
, 这被称为与 self.get_file
, ,这是一个束缚方法。循环过代理特性是希望能够得到的属性关闭这类设置,把它们纳入它的 mdic
代理词典之后,包裹它们,但它们不存在,因为这是一个有限的方法,而不是一类。因为它不能找到他们,这将恢复到呼叫他们 Dstorage
.
因此,长话短说,你不能用一个可以返回的一个实例(种伪类),而不是一类里,因为保险丝是检查的对象,设置找到方法应该呼叫。
你需要来分配一类的 file_class
-如果你需要回到母体实例,可以使用嵌套类的伎俩他们出现在文档。
不隶属于 StackOverflow