我正在学习Python中的OOP,并且有一个与类和实例变量相关的查询。
>>> class Something:
... val = 10
... def __init__(self):
... self.instval = 100
...
>>> some = Something()
>>> some.val
10
>>> some.instval
100
>>> dir(some)
['__doc__', '__init__', '__module__', 'instval', 'val']
>>> some.val = 1000
>>> dir(some)
['__doc__', '__init__', '__module__', 'instval', 'val']
>>> some.val
1000
>>> Something.val
10
>>> del some.val
>>> some.val
10
>>> dir(some)
['__doc__', '__init__', '__module__', 'instval', 'val']
在这个课程中,我有val
个类变量,instval
个实例变量。
我将val
类变量声明为1000.所以some.val
给了我1000但Something.val
仍然给了我10.当我删除some.val
时,它会恢复为类变量值。
我知道解释器首先在实例级别查找变量,然后在类级别查找。那么这里发生了什么?
我已经完成了一些答案,我认为this是最合适的,但我并没有完全理解它的含义。