相关疑难解决方法(0)

python:类属性和实例属性

我是python的新手,并且知道类属性就像C++中的静态数据成员一样.但是,在尝试以下代码后我感到困惑:

>>> class Foo:
...     a=1
... 
>>> f1=Foo();
>>> f2=Foo()
>>> f1.a
1
>>> f1.a=5
>>> f1.a
5
>>> f2.a
1
Run Code Online (Sandbox Code Playgroud)

f2.a也不应该等于5吗?

如果a被定义为列表而不是整数,则行为是预期的:

>>> class Foo:
...     a=[]
... 
>>> f1=Foo();
>>> f2=Foo()
>>> f1.a
[]
>>> f1.a.append(5)
>>> f1.a
[5]
>>> f2.a
[5]
Run Code Online (Sandbox Code Playgroud)

我看了 Python:类和实例属性之间的区别,但它没有回答我的问题.

谁能解释为什么会有区别?谢谢

python

6
推荐指数
3
解决办法
3520
查看次数

标签 统计

python ×1