[英]Why are extension attributes inaccessible in python protobuf objects?
[英]How to extend protobuf objects in python
我已經定義了一個 protobuf 消息,我想為它創建一個包裝器/代理/樣板/擴展/任何東西,以便我可以添加自定義方法。
protobuf 的文檔說,建議您不要直接從 protobuf 繼承,因為它實際上是定義大多數方法/屬性的描述符和元類。
我想知道當繼承不是一個穩定的選擇時,人們如何盡可能地“繼承”一個類,或者是否有人有幸使用 protobuf codegen 擴展/定義自定義 Message 類,如果這是一個合理的想法。
沒用過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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.