前信息
我们有一个运行在多台机器上的结构,这些机器通过使用json可序列化对象在设备之间传输数据来相互通信。
我试图通过使用markdown为这些类创建文档。
问题
class BaseParams(JsonObject):
""" default values for all classes"""
def __init__(self):
self.param0: str = "test"
class ExampleParams(BaseParams):
""" example class for data container"""
def __init__(self, param1: str):
super().__init__()
self.param1: str = param1
self.param2: int = 0
我在py文件中有很多类ExampleParams。我在inspect和importlib模块的帮助下动态地收集了它们,它们的文档等,但是我还必须收集它们的params和params的类型。
试图得到这样的东西:
resultdict = {
"ExampleParams":{"param0":"str","param1":"str","param2":"int"}
}
我怎样才能做到这一点没有初始化类?
PS1:当我初始化它们时很容易,但是有很多类,每个类都有不同的初始化值。所以我猜我必须不初始化它们而这样做。
PS2:每个atrribute的类型是通过键入模块声明的
如果没有初始化本地PARAMS喜欢param0
和param2
有没有评估,所以Python解释器没有关于他们的存在或类型的信息。
您唯一的可能性是收集__init__
method的参数。使用示例结构:
import inspect
params = []
for parent in ExampleParams.mro()[::-1]:
parent_init = inspect.getfullargspec(parent.__init__)
# parent_init.annotations contains annotations if specified in method signature
for param in parent_init.args:
if param == 'self':
continue
params.append(param)
params = ['param1']
在你的情况下。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句