关于python中菱形继承的问题:
A
/ \
B C
\ /
D
Run Code Online (Sandbox Code Playgroud)
我首先创建了这个
class A:
def __init__(self):
print('a')
class B(A):
def __init__(self):
print('b')
A.__init__(self)
class C(A):
def __init__(self):
print('c')
A.__init__(self)
class D(B,C):
def __init__(self):
print('d')
super().__init__()
test = D()
Run Code Online (Sandbox Code Playgroud)
它的输出是 d, b, a
改变B和C之后A.__init__() to super()
class A:
def __init__(self):
print('a')
class B(A):
def __init__(self):
print('b')
super().__init__() # THIS AND ^^
class C(A):
def __init__(self):
print('c')
super().__init__() # THIS ^^
class D(B,C):
def __init__(self):
print('d')
super().__init__()
test = D()
Run Code Online (Sandbox Code Playgroud)
输出为 d、b、c、a
有人可以解释为什么该程序会这样运行吗?
我试图创建一个包含n 个空列表的列表,但遇到了一个有趣的情况。
首先我尝试了以下方法:
>>> n = 3
>>> list([]) * n
[]
Run Code Online (Sandbox Code Playgroud)
它创建一个空列表。
之后,我尝试了以下行,它也创建了一个空列表:
>>> list(list()) * n
[]
Run Code Online (Sandbox Code Playgroud)
但是当我用文字尝试同样的方法时,
>>> [[]] * n
[[], [], []]
Run Code Online (Sandbox Code Playgroud)
它给出了正确的输出。有人可以解释为什么吗?
我找不到这个问题的直接答案,但是是否可以enum
在 C 中强制使用某种数据类型?
例如,我有一个enum
状态机,它只保存一些状态,因此对于内存和性能问题,将 an 定义enum
为字节或更短的数据类型会很好。有没有办法在 C 语言甚至 Arduino IDE 中提供这种行为?
任何帮助表示赞赏