首页 > 编程 > Python > 正文

实例讲解Python中的私有属性

2020-02-23 05:41:09
字体:
来源:转载
供稿:网友

在Python中可以通过在属性变量名前加上双下划线定义属性为私有属性,如例子:
代码如下:
#! encoding=UTF-8
 
class A:
    def __init__(self):
        
        # 定义私有属性
        self.__name = "wangwu"
        
        # 普通属性定义
        self.age = 19
        
a = A()
 
# 正常输出
print a.age
 
# 提示找不到属性
print a.__name

执行输出:
代码如下:
Traceback (most recent call last):
  File "C:/Users/lee/Documents/Aptana Studio 3 Workspace/testa/a.py", line 19, in <module>
    print a.__name
AttributeError: A instance has no attribute '__name'

访问私有属性__name时居然提示找不到属性成员而不是提示权限之类的,于是当你这么写却不报错:
代码如下:
#! encoding=UTF-8
 
class A:
    def __init__(self):
        
        # 定义私有属性
        self.__name = "wangwu"
        
        # 普通属性定义
        self.age = 19
        
 
a = A()
 
a.__name = "lisi"
print a.__name

执行结果:
1
lisi
在Python中就算继承也不能相互访问私有变量,如:
代码如下:
#! encoding=UTF-8
 
class A:
    def __init__(self):
        
        # 定义私有属性
        self.__name = "wangwu"
        
        # 普通属性定义
        self.age = 19
        
 
class B(A):
    def sayName(self):
        print self.__name
        
 
b = B()
b.sayName()

执行结果:
代码如下:
Traceback (most recent call last):
  File "C:/Users/lee/Documents/Aptana Studio 3 Workspace/testa/a.py", line 19, in <module>
    b.sayName()
  File "C:/Users/lee/Documents/Aptana Studio 3 Workspace/testa/a.py", line 15, in sayName

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表