Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 名称错误:名称'_长度';没有定义_Python_Oop_Python 3.x - Fatal编程技术网

Python 名称错误:名称'_长度';没有定义

Python 名称错误:名称'_长度';没有定义,python,oop,python-3.x,Python,Oop,Python 3.x,我正在使用python3,在尝试运行以下代码时,我遇到了错误: NameError: name '_length' is not defined 守则本身: class OFPHELLO(GenericStruct): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self._length = self.get_size() _msg_type =

我正在使用python3,在尝试运行以下代码时,我遇到了错误:

NameError: name '_length' is not defined
守则本身:

class OFPHELLO(GenericStruct):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self._length = self.get_size()

    _msg_type = OFPType.OFPT_HELLO
    _build_order = ('header', 'x')

    header = OFPHeader(type = _msg_type, length = _length)
    x = UBInt8()
问题是我传入的
of header
\u length
变量,其值在
GenericStruct
中计算。如何计算OFPHILLO类中的
\u length
变量,并将其用作
OFPHeader
类中的参数

遵循
GenericStruct
代码:

class GenericStruct(object):
  def __init__(self, **kwargs):
      for a in kwargs:
          try:
              field = getattr(self, a)
              field.value = kwargs[a]
          except AttributeError:
              raise OFPException("Attribute error: %s" % a)

 def build(self):
      hexa = ""
      for field in self._build_order:
          hexa += getattr(self, field).build()
      return hexa

 def parse(self, buff):
      begin = 0
      for field in self._build_order:
          size = getattr(self, field).get_size()
          getattr(self,field).parse(buff, offset=begin)
          begin += size

 def get_size(self):
      tot = 0
      for field in self._build_order:
          tot += getattr(self, field).get_size()
      return tot

-您如何定义(通用结构) -页眉=页眉(类型=\u消息类型,长度=\u长度) -将拼写改为长度


--下次请发布完整的代码

您的异常的完整回溯是什么?
GenericStruct
来自哪里?还要注意,您拼写错误了
\u length
,将
t
h
转置。我还修复了您的后期缩进。请验证它是否与您的实际代码匹配。可能是因为您拼错了“长度”。切换最后两个字母。谢赫,谢谢你的回答,但拼写错误是在我发布问题时发生的,代码是可以的。我发布了全部代码。