Python语言的类实例化后的类内数据的私有和公有

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]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值