[py]python的私有变量

参考

python中并没有真正意义上的私有成员,它提供了在成员前面添加双下划线的方法来模拟类似功能。具体来说:

    _xxx 表示模块级别的私有变量或函数
    __xxx 表示类的私有变量或函数

这被称为name nangling,将__membername替换为_classname__membername。
这样从语法上实现了私有成员不能用classinstance.__membername访问,但是任然可以用
classinstance._classname__membername访问。

python类的私有属性

class A(object):
    def __init__(self):
        self.age = 22

a = A()

class B(object):
    def __init__(self):
        self.__age = 22

b = B()

[py]python的私有变量

class私有属性防止子类同名重写

子类继承父类age属性,并重写,后访问父类age,也变了

class A(object):
    def __init__(self):
        self.age = 42

    def foo(self):
        print self.age

class B(A):
    def __init__(self):
        super(A, self).__init__()
        self.age = 21

    def bar(self):
        print self.age

p = B()
p.bar()
p.foo()

//21  21

将父类的__age私有化后,子类继承重写该变量,访问父类方法也不会改变

class A(object):
    def __init__(self):
        self.__age = 42

    def foo(self):
        print self.__age

class B(A):
    def __init__(self):
        super(B, self).__init__()
        self.__age = 21

    def bar(self):
        print self.__age

p = B()
p.bar()
p.foo()

//21  42
上一篇:黄聪:WordPress 多站点建站教程(五):获取子站点用户信息(通过输入站点ID号来获取该站点的所有用户)


下一篇:python基础8 - 变量2