Python 如何创建大小可调的字段?

Python 如何创建大小可调的字段?,python,ctypes,Python,Ctypes,我正在创建一个包含一组字段的结构,我想定义一些字段与接收到的输入一样长,而其他字段只有在为它们提供输入时才会存在(否则它将消失)-因此,当我打印结构时,只打印相关字段(那些有输入或预定义的字段,即使“0”也要打印)将打印 class Data (Frame): _name_ = 'Data' _pack_ = 1 _fields_ = [ ("fc", fc), ("duration",

我正在创建一个包含一组字段的结构,我想定义一些字段与接收到的输入一样长,而其他字段只有在为它们提供输入时才会存在(否则它将消失)-因此,当我打印结构时,只打印相关字段(那些有输入或预定义的字段,即使“0”也要打印)将打印

class Data (Frame):
    _name_ = 'Data'
    _pack_ = 1
    _fields_ = [
        ("fc",                      fc),
        ("duration",          c_uint16),
        ("add1",           c_ubyte * 6),
        ("add2",           c_ubyte * 6),
        ("add3",           c_ubyte * 6),
        ("fb",                c_uint16),
    ]

    def __init__(self, **kwargs):
        params = {
            'duration': c_uint16(kwargs.get('duration', 0)),
            'add1': address_to_ubyte(kwargs.get('add1', None)),
            'add2': address_to_ubyte(kwargs.get('add2', None)),
            'add3': address_to_ubyte(kwargs.get('add4', None)),
            'fb':c_uint16(kwargs.get(fb, 0)),
        }
这就是我目前所拥有的。(我知道它不起作用)
例如,除非另有定义,否则我希望duration add1和add2字段为“0”,add3仅在收到输入时存在(如果不存在-它不应该出现),而“fb”字段为给定输入的大小(如果不存在,那么它应该为“0”)

您的问题不清楚。你想做什么?你想要的输出是什么?请阅读我有一个打印数据的函数。我希望将duration、add1和add2设置为“0”,除非程序接收并输入到该字段(具有设置的大小)。add3,我如何定义这是一个类似于add1和add2的字段,只有现在,如果add3没有输入,它就不应该是任何字段(甚至不是“0”),所以当我打印“数据”时,我不会从add3中得到任何额外的零。fb字段:无论发生什么情况,我都希望存在(即,如果没有输入,那么它应该是“0”),但是字段的大小应该根据输入而改变(而不是像其他字段那样设置)。您是否有一个结构初始化的示例,以及它应该如何以及如何进行?还有,帧和地址是什么?请仔细阅读并更新您的问题。您的问题不清楚。你想做什么?你想要的输出是什么?请阅读我有一个打印数据的函数。我希望将duration、add1和add2设置为“0”,除非程序接收并输入到该字段(具有设置的大小)。add3,我如何定义这是一个类似于add1和add2的字段,只有现在,如果add3没有输入,它就不应该是任何字段(甚至不是“0”),所以当我打印“数据”时,我不会从add3中得到任何额外的零。fb字段:无论发生什么情况,我都希望存在(即,如果没有输入,那么它应该是“0”),但是字段的大小应该根据输入而改变(而不是像其他字段那样设置)。您是否有一个结构初始化的示例,以及它应该如何以及如何进行?还有,帧和地址是什么?请仔细阅读并相应更新您的问题。