在类里弄一个闭包出来
很多资料上说,类内部的变量有两种。
按定义所在的位置,分__init__上方的和__init__下方的
按内存所在的位置,分类的和实例的,或者说公共的和私有的
现在,我想在类里定义一个保存实例个数的变量 x,如下:
>>>
class Foo:
. . . x =
0
. . . def __init__(self):
. . . self.x += 1
. . . print(self.x)
>>> f1 =
Foo()
1
>>> f2 =
Foo()
1
>>>
Foo.x
0
显然,结果跟想法不符。
这里,各个实例的x是私有的,而类的x一直是零!
换种思路,把 x 定义成列表,看看
>>>
class Bar:
. . . x =
[0]
. . . def __init__(self):
. . . self.x[0] += 1
. . . print(self.x[0])
>>> b1 =
Bar()
1
>>> b2 =
Bar()
2
>>>
Bar.x[0]
2
,额,可以了!因为x是对象,他的内存空间地址就固定了(这个说法不太恰当,将就理解吧)
转载于:https://www.cnblogs.com/hhh5460/p/5178879.html
相关资源:JAVA上百实例源码以及开源项目