有没有一种方法可以轻松地公开python类内部对象的APi而不重新键入该对象的每个API?例如,我编写了一个redis复制类,我的所有函数如下
def get_connection(self, name):
........
host, conn = self.colo_rings[name]
return conn
def hgetall(self, name):
return self.get_connection(name).hgetall(name)
def hset(self, name, key, value):
return self.get_connection(name).hset(name, key, value)
def hsetnx(self, name, key, value):
return self.get_connection(name).hsetnx(name, key, value)
def hdel(self, name, *key, colo=None):
return self.get_connection(name).hdel(name, *key)我如何改进这段代码,使它不那么“丑陋”呢?
发布于 2014-09-17 15:40:48
您应该能够使用类似于此的内容:
class B(object):
def __getattribute__(self, method):
try:
return getattr(self, method)
except:
return getattr(self.get_connection(key), method)这里的优点是,通过在类中定义连接,仍然可以使用连接上不存在的方法,但是在尝试通过myB.hgetall()访问连接时,将使用未定义和存在于连接上的任何方法(例如)。
为了完整性- __getattr__就足够了:
class B(object):
def __getattr__(self, method):
return getattr(self.get_connection(key), method)https://stackoverflow.com/questions/25894092
复制相似问题