我知道这个C#代码:
public class ClassA
{
public byte var1;
}
可以转换为以下Python代码:
class ClassA(object):
def __init__(self):
self.var1 = bytes() # or b''
但是,如果var1
是一个字节数组,如下所示:
public byte[] var1;
通常,我会这样做:
[bytes(i) for i in myList]
但是在这种情况下,不存在像myList
这样的变量来填补该位置,这给我留下了[bytes(i) for i in ]
这显然在语法上是无效的。
与 Python 中的模拟 C# 类相关
bytes()
不等同于 C# 字节。Python 中没有直接等同于 C# 字节;最接近的是普通的 int。我认为该 C# 类最直接的翻译是
class ClassA(object):
def __init__(self):
self.var1 = 0
bytes
对象是不可变的字节序列。如果你想要一个可变的字节序列,一个bytearray
或一个普通的list
是一个合适的,或者一个array.array
数组。除非我有特定原因,否则我可能会选择该列表,真的:
class ClassA(object):
def __init__(self):
self.var1 = []
请注意,bytearray
和bytes
表示无符号字节序列;它们的元素从 0 到 255,而不是从 -128 到 127。array.array('b')
将是一系列有符号字节。