我想从一堆变量中读取组合信息。 我试过这个:
class MyStruct:
first_byte = 0
second_byte = 0
combined = str(hex(first_byte)) + " " + str(hex(second_byte))
test = MyStruct() test.first_byte = 36 test.second_byte = 128
print("MyStruct: test first=%i second=%i comb=%s" %(test.first_byte, test.second_byte, test.combined))
我得到了:
> MyStruct:先测试= 36秒= 128 comb = 0x0 0x0
但我在期待:
> MyStruct:先测试= 36秒= 128 comb = 0x24 0x80
我看到它们的计算结合在声明时才进行。但我不知道如何再次计算它。
为什么我使用这个: 我想在CARBERRY上为LIN信号创建一个协议字符串 您可以在此处找到更多信息:LIN-command
我想像这样单独定义每个字节:
protokol.pid = 10
protokol.D0 = value_one
protokol.D1 = value_two
依旧......
答案 0 :(得分:0)
嗯,简单地说就是combined = str(hex(first_byte)) + " " + str(hex(second_byte))
行
在创建类时进行评估。
你能做的是以下几点:
class MyStruct:
def __init__(self, first_byte, second_byte):
self.first_byte = first_byte
self.second_byte = second_byte
self.combined = hex(first_byte) + " " + hex(second_byte)
test = MyStruct(36, 128)
print("MyStruct: test first=%i second=%i comb=%s" %(test.first_byte, test.second_byte, test.combined))
我建议你在进一步研究之前先看看课程,方法和属性,你可以选择一些有用的工具。
进一步说明:
通过直接在类中声明first_byte和second_byte,您将创建由MyStruct.first_byte
和MyStruct.second_byte
访问的静态类变量。这里有一个例子来说明我在谈论的内容:
>>> class A:
tag = 10
def set_tag(self, val):
self.tag = val
>>> b = A()
>>> b.tag
10
>>> A.tag
10
>>> b.set_tag(5)
>>> b.tag
5
>>> A.tag
10