我是python的新手。当我在Python中编码时,我注意到这种奇怪的行为:
等级x:
class x:
x1 = 0
def __init__(self, x):
self.x1 = x
类xcontainer:
class xContainer:
coint = []
def __init__(self, coint = []):
self.coint = coint
def add_x(self, x):
self.coint.append(x)
当我尝试运行此代码时:
def Main():
list_xcon = []
for i in range (0,2):
xcon = xContainer()
for j in range (i, i+1):
xcon.add_x(x(j))
list_xcon.append(xcon)
for xcont in list_xcon:
for xc in xcont.coint:
print xc.x1
我得到了那些结果:
0 1 0 1
但是当我运行此代码时:
def Main():
list_xcon = []
for i in range (0,2):
listt = []
xcon = xContainer(listt)
for j in range (i, i+1):
xcon.add_x(x(j))
list_xcon.append(xcon)
for xcont in list_xcon:
for xc in xcont.coint:
print xc.x1
我得到了那些结果:
0 1
为什么?根据{{1}},class xcontainer
的默认值应为coint
- 空列表。那么为什么发送空列表会改变结果?
顺便说一句,我认为使用[]
作为默认设置并检查coint = None
是更好的方法,但似乎它不会在此更改结果。
我将不胜感激任何解释。我很困惑。
感谢。