簡體   English   中英

如何在python中擴展protobuf對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM