gpt4 book ai didi

Python类接口(interface)设计

转载 作者:太空宇宙 更新时间:2023-11-03 18:11:14 24 4
gpt4 key购买 nike

有没有一种方法可以轻松公开 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)

如何改进这段代码并使其不那么“丑陋”?

最佳答案

您应该能够使用类似的东西:

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)

关于Python类接口(interface)设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25894092/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com