次のように呼び出すことができるread
andメソッドを含むクラスを定義したいと思います。write
instance.read
instance.write
instance.device.read
instance.device.write
インターレースされたクラスを使用しないために、私の考えは__getattr__
と__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__
新しい attribute を作成しようとすると、x
が呼び出さ__setattr__
れ、再び が呼び出さ__setattr__
れます。このコードを変更するにはどうすればよいですか。この場合、値を保持する の新しい属性x
がself
作成されます1
。
instance.device.read
または、「マップ」されるような呼び出しを処理するより良い方法はありますinstance.read
か?
理由については常に疑問があります。xmlrpc
呼び出しの抽象化を作成する必要があるため、非常に簡単なメソッドなどmyxmlrpc.instance,device.read
を作成できます。このようなマルチドットメソッド呼び出しを模倣するには、これを「モック」する必要があります。