如何在python中扩展protobuf对象
我已经定义了一个protobuf消息,我想为它创建一个包装器/代理/样板/扩展/任何东西,以便添加自定义方法 protobuf的文档说,建议您不要直接从protobuf继承,因为它实际上是一个描述符和元类,定义了大多数方法/属性如何在python中扩展protobuf对象,python,python-3.x,design-patterns,protocol-buffers,grpc-python,Python,Python 3.x,Design Patterns,Protocol Buffers,Grpc Python,我已经定义了一个protobuf消息,我想为它创建一个包装器/代理/样板/扩展/任何东西,以便添加自定义方法 protobuf的文档说,建议您不要直接从protobuf继承,因为它实际上是一个描述符和元类,定义了大多数方法/属性 我想知道,当继承不是一个稳定的选项时,人们如何尽可能地“继承”一个类,或者是否有人有幸使用protobuf codegen来扩展/定义自定义消息类,以及这是否是一个合理的想法。从未使用protobuf,而且不知道python的dir函数是否能在上面工作。但如果是这样,你
我想知道,当继承不是一个稳定的选项时,人们如何尽可能地“继承”一个类,或者是否有人有幸使用protobuf codegen来扩展/定义自定义消息类,以及这是否是一个合理的想法。从未使用protobuf,而且不知道python的
dir
函数是否能在上面工作。但如果是这样,你可以这样做:
class A:
def app(self):
print("app")
def bla(self):
print("bla")
class wrapperA:
def __init__(self,a):
self.dict_of_functions = {x:getattr(a, x) for x in dir(A)}
def funcA(self, func_name):
return self.dict_of_functions[func_name]()
a = A()
wa = wrapperA(a)
for x in ["app", "bla"]:
wa.funcA(x)
手册建议您制作一个包装器我想更确切地说,我正在寻找“呈现”为protobuf的东西,这样我就可以运行
instanceof
和内置protobuf方法。当然,您可以通过编写代理手动完成这项工作,但我想知道是否有一种更自动的方式来完成这项工作,而无需逐个方法地定义样板文件。