Python语言的类实例化后的类内数据的私有和公有
首先说这个特性有些坑爹,在周五耗掉了我大半天来弄懂了这个问题(之前关键是不知道怎么描述这个问题!)另外我写python喜欢写分号;见笑了…
结论
先说结论结论就是,私有变量的写法:
class OBJ(object):
"""docstring for OBJ"""
def __init__(self, arg):
super(OBJ, self).__init__()
self.arg = arg;
self.Arr = [];
公有变量的写法:
class OBJ(object):
"""docstring for OBJ"""
arg = 0;
Arr = [];
def __init__(self, arg):
super(OBJ, self).__init__()
试验一下
公有变量的情况:
class OBJ(object):
"""docstring for OBJ"""
arg = 0;
Arr = [];
def __init__(self, arg):
super(OBJ, self).__init__()
#self.arg = arg
#self.Arr = [];
def exp():
obj1 = OBJ(1);obj2 = OBJ(2);
obj1.Arr.append(1);
print 'Arr of obj1: ' + str(obj1.Arr);
print 'Arr of obj2: ' + str(obj2.Arr);
if __name__ == '__main__':
exp();
运行得到:(这。。。多个实例化的时候很无语)
Arr of obj1: [1]
Arr of obj2: [1]
[Finished in 0.1s]
私有变量的写法:
class OBJ(object):
"""docstring for OBJ"""
#arg = 0;
#Arr = [];
def __init__(self, arg):
super(OBJ, self).__init__()
self.arg = arg
self.Arr = [];
def exp():
obj1 = OBJ(1);obj2 = OBJ(2);
obj1.Arr.append(1);
print 'Arr of obj1: ' + str(obj1.Arr);
print 'Arr of obj2: ' + str(obj2.Arr);
if __name__ == '__main__':
exp();
结果是:
Arr of obj1: [1]
Arr of obj2: []
[Finished in 0.0s]