[英]How to use C++ struct in struct in Python
我必須將C ++代碼轉換為Micro Python到Wipy平台。 目前,我遇到了一些問題,尤其是從其他結構訪問變量時
C ++代碼:
typedef struct {
char id[100];
int rssi;
} tag_info;
typedef struct {
tag_info tag[20];
} tag_list;
typedef struct {
int timestamp;
tag_list tags;
int heading;
int airt;
} data_packet;
data_packet packet;
for (i = 0; i < total_amount_of_tags - 1; i++) {
print_function("id", packet.tags.tag[i].id, destination);
print_function("rssi", packet.tags.tag[i].rssi, destination);
}
我的MicroPython代碼:
class tag_info:
def __init__(self):
self.id = ""
self.rssi = 0
class tag_list:
def __init__(self):
self.tag = tag_info
class data_packet():
def __init__(self):
self.timestamp=0
self.tags = tag_list
self.heading=0
self.airt=0
packet=data_packet()
for i in range(0, total_amount_of_tags -1)
print_function('id',packet.tags.tag[i].id,destination)
print_function("rssi", packet.tags.tag[i].rssi, destination);
我的代碼中的問題是我無法訪問tag [i]和其他變量。 在這種情況下,我應該使用繼承還是namedTuple? 如果我嘗試from collections import namedTuple
使用namedTuple from collections import namedTuple
則會發生以下錯誤消息: no module called collections
,因此我希望盡可能避免使用該庫。
在下面的:
self.tag = tag_info
您正在為變量分配一個類。
我認為您打算這樣做:
self.tag = tag_info()
但是如果我理解正確,那么應該將其作為tag_info的列表,因此您實際需要的是:
self.tag = [tag_info() for i in range(20)]
同樣適用於:
self.tags = tag_list()
關於預期行為應該是什么,這有點令人困惑。 但看起來您需要創建20個tag_info
實例。 另外,您需要使用()
實例化實例。
class tag_info:
def __init__(self):
self.id = ""
self.rssi = 0
class tag_list:
def __init__(self):
self.tag = [tag_info() for _ in range(20)]
class data_packet():
def __init__(self):
self.timestamp=0
self.tags = tag_list()
self.heading=0
self.airt=0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.