Python对象初始化在逻辑上不起作用(属性充当静态变量)

Python对象初始化在逻辑上不起作用(属性充当静态变量),python,Python,我们有三个类BlockTag,RowTag和ColumnTag。RowTag和ColumnTag都是从BlockTag扩展而来的。您可以在下面看到它们: 区块标签: 行标记: ColumnTag: 问题是,当我创建两个RowTag类型的对象时,第二个对象具有第一个对象的列!正如我们所知,对象应该是独立的 r1=RowTag().add_td_tags( ColumnTag(), ColumnTag(), ColumnTag(), ) r2=RowTag() print

我们有三个类BlockTag,RowTag和ColumnTag。RowTag和ColumnTag都是从BlockTag扩展而来的。您可以在下面看到它们:

区块标签:

行标记:

ColumnTag:

问题是,当我创建两个RowTag类型的对象时,第二个对象具有第一个对象的列!正如我们所知,对象应该是独立的

r1=RowTag().add_td_tags(
    ColumnTag(),
    ColumnTag(),
    ColumnTag(),
)

r2=RowTag()

print("size=>")
print(len(r2.inner_td_tags))#prints 3!!!!
如果你能帮我一点忙,我会很高兴的。

在rowtag类中

self.inner_td_tags=inner_td_tags if inner_td_tags else []
还有一件事,有很多;在python代码中。不需要给它们,所以删除它们,代码就可以正常工作

print("size=>")
print(len(r2.inner_td_tags))

print("size=>")
print(len(r1.inner_td_tags))
输出

size=>
0
size=>
3

当我看到它时,它并没有按照你说的做。我敢打赌,您的实际代码在RowTag uuu init uuuuu中有一个可变的默认参数bug,表示内部的td_标记=[],而不是内部的td_标记=None。谢谢,这段代码很好用。如果我在python默认值中走对了方向,那么总是传递相同的对象。是吗?
self.inner_td_tags=inner_td_tags if inner_td_tags else []
print("size=>")
print(len(r2.inner_td_tags))

print("size=>")
print(len(r1.inner_td_tags))
size=>
0
size=>
3