Tri*_*daz 2 python variables class
这个脚本:
class testa():
a = []
class testb():
def __init__(self):
self.a = []
ta1 = testa(); ta1.a.append(1); ta2 = testa(); ta2.a.append(2)
tb1 = testb(); tb1.a.append(1); tb2 = testb(); tb2.a.append(2)
print ta1.a, ta2.a, tb1.a, tb2.a
Run Code Online (Sandbox Code Playgroud)
产生这个输出:
[1, 2] [1, 2] [1] [2]
Run Code Online (Sandbox Code Playgroud)
但我期待
[1] [2] [1] [2]
Run Code Online (Sandbox Code Playgroud)
我为什么错了?testa和testb的定义似乎与我相同,那么为什么行为会如此彻底地改变?!
编辑:这似乎不直观,因为它不同于其他类型如int和str的行为.由于某种原因,列表在init中未初始化时被创建为类变量,但无论如何都将int和strs创建为对象变量.
| 归档时间: |
|
| 查看次数: |
220 次 |
| 最近记录: |