我想定义一个包含read
和write
方法的类,可以如下调用:
instance.read
instance.write
instance.device.read
instance.device.write
为了不使用交错类,我的想法是覆盖__getattr__
and__setattr__
方法并检查给定名称是否device
将返回重定向到self
. 但是我遇到了一个无限递归的问题。示例代码如下:
class MyTest(object):
def __init__(self, x):
self.x = x
def __setattr__(self, name, value):
if name=="device":
print "device test"
else:
setattr(self, name, value)
test = MyTest(1)
正如在__init__
代码中试图创建一个新属性x
,它调用__setattr__
,它再次调用__setattr__
等等。我如何需要更改此代码,在这种情况下,创建一个新属性x
,self
保存值1
?
或者有没有更好的方法来处理像instance.device.read
被“映射”到的呼叫instance.read
?
因为总是有关于为什么的问题:我需要创建xmlrpc
调用的抽象,可以创建非常简单的方法myxmlrpc.instance,device.read
和类似的方法。我需要“模拟”它以模仿这种多点方法调用。