次のように呼び出すことができるreadandメソッドを含むクラスを定義したいと思います。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を作成できます。このようなマルチドットメソッド呼び出しを模倣するには、これを「モック」する必要があります。