C# Python2.7:将构造函数变量初始化为字节数组

C# Python2.7:将构造函数变量初始化为字节数组,c#,python,python-2.7,C#,Python,Python 2.7,我知道这个代码: public class ClassA { public byte var1; } class ClassA(object): def __init__(self): self.var1 = bytes() # or b'' 可以转换为以下代码: public class ClassA { public byte var1; } class ClassA(object): def __init__(self):

我知道这个代码:

public class ClassA
{
    public byte var1;
}
class ClassA(object):
    def __init__(self):
        self.var1 = bytes() # or b''
可以转换为以下代码:

public class ClassA
{
    public byte var1;
}
class ClassA(object):
    def __init__(self):
        self.var1 = bytes() # or b''
但是,如果
var1
是一个字节数组,该怎么办呢

public byte[] var1;
通常,我会:

[bytes(i) for i in myList]
但是在这种情况下,不存在像
myList
这样的变量来填补这个位置,这就给我留下了
[字节(i)for i in]
,这显然在语法上是无效的

字节相关()
不是C#字节的等价物。Python中没有C#字节的直接等价物;最接近的是一个普通的int。我认为C类的最直接的翻译是

class ClassA(object):
    def __init__(self):
        self.var1 = 0
字节
对象是不可变的字节序列。如果您想要一个可变的字节序列,可以使用一个或普通的
列表,也可以使用一个。除非我有具体的理由去做,否则我可能会选择这个名单,真的:

class ClassA(object):
    def __init__(self):
        self.var1 = []

注意,
bytearray
bytes
表示无符号字节序列;它们的元素从0到255,而不是从-128到127。一个
数组。数组('b')
将是一个有符号字节序列。

是什么使
0
bytes()
b'
更简洁?我对这个话题不太熟悉。@CtrlS:这不是关于什么更简洁;这是关于编写代码,实际上意味着正确的事情。(
0
更简洁,是1个字符而不是7或3个字符,但这并不重要。)也许简洁是个错误的词……我想我真正想问的是
bytes()
0
有何不同?@CtrlS:
bytes()
是一个不可变的0字节序列
0
是整数0。因此不同之处在于bytes()表示多个字节,而0显然是单个值。好的,谢谢。