Python 名称错误:名称'_长度';没有定义
我正在使用python3,在尝试运行以下代码时,我遇到了错误: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 =
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
转置。我还修复了您的后期缩进。请验证它是否与您的实际代码匹配。可能是因为您拼错了“长度”。切换最后两个字母。谢赫,谢谢你的回答,但拼写错误是在我发布问题时发生的,代码是可以的。我发布了全部代码。