【发布时间】:2018-03-09 18:00:20
【问题描述】:
我在理解 Python 类中的静态变量的概念方面存在问题。根据Static class variables in Python,每当我们在方法外部和python 类内部定义变量时,该变量都是静态的。这意味着无需从类中实例化对象就可以访问该变量,并且可以直接通过类名访问该变量。 例如:
class my_class:
i=12
def __init__(self,j):
self.j=j
instance=my_class(10)
my_class.i:
>12
instance.i:
>12
instance.i=13
instance.i:
>13
my_class.i:
>12
可以看到我们可以通过实例对象和类名来访问静态变量i。但是,当我们更改 i 的值时,它不会影响类的值(my_class.i 仍然是 12)。
另一方面,如果我们使用数组静态变量,事情就会完全改变。
考虑类似的例子:
class my_class:
i=[]
def __init__(self,j):
self.j=j
instance=my_class(10)
my_class.i:
>[]
instance.i:
>[]
instance.i.append(13)
instance.i:
>[13]
my_class.i:
>[13]
您可以看到,当我更改实例对象数组的变量时,它也会影响类值。这里发生了什么?如果有人能帮助我更好地理解这个问题,我将不胜感激,因为这对我来说并不是那么明显。顺便说一句,我有 Java 背景。
【问题讨论】:
-
为什么标记为 Java?
标签: python class object instance