当前位置:  编程技术>python

实例讲解Python中的私有属性

    来源: 互联网  发布时间:2014-10-10

    本文导语:  在Python中可以通过在属性变量名前加上双下划线定义属性为私有属性,如例子: 代码如下: #! encoding=UTF-8   class A:     def __init__(self):                  # 定义私有属性         self.__name = "wangwu"          ...

在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:UsersleeDocumentsAptana Studio 3 Workspacetestaa.py", line 19, in
    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:UsersleeDocumentsAptana Studio 3 Workspacetestaa.py", line 19, in
    b.sayName()
  File "C:UsersleeDocumentsAptana Studio 3 Workspacetestaa.py", line 15, in sayName
    print self.__name
AttributeError: B instance has no attribute '_B__name'

或者父类访问子类的私有属性也不可以,如:
代码如下:

#! encoding=UTF-8
 
class A:
    def say(self):
        print self.name
        print self.__age
        
 
class B(A):
    def __init__(self):
        self.name = "wangwu"
        self.__age = 20
 
b = B()
b.say()

执行结果:
代码如下:

wangwu
Traceback (most recent call last):
  File "C:UsersleeDocumentsAptana Studio 3 Workspacetestaa.py", line 15, in
    b.say()
  File "C:UsersleeDocumentsAptana Studio 3 Workspacetestaa.py", line 6, in say
    print self.__age
AttributeError: B instance has no attribute '_A__age'

    
 
 

您可能感兴趣的文章:

  • C#中私有构造函数的特点和用途实例解析
  • oracle的存储过程实例讲解
  • Jquery each方法跳出循环,并获取返回值(实例讲解)
  • JavaScript正则表达式验证中文实例讲解
  • ThinkPHP之A方法实例讲解
  • gridview的buttonfield获取该行的索引值(实例讲解)
  • 使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
  • Jquery ajaxStart()与ajaxStop()方法(实例讲解)
  • C#控制台带参数程序源码编写实例讲解
  • jquery遍历select元素(实例讲解)
  • Android入门之LinearLayout、AbsoluteLayout的用法实例讲解
  • sql server 分组统计实例讲解
  • python使用xmlrpc实例讲解
  • Java冒泡排序(Bubble Sort)实例讲解
  • c#委托把方法当成参数(实例讲解)
  • Android获取手机型号/系统版本号/App版本号等信息实例讲解
  • C与C++之间相互调用实例方法讲解
  • C# 委托(跨窗体操作控件)实例流程讲解
  • jQuery:delegate中select()不起作用的解决方法(实例讲解)
  • 互斥量mutex的简单使用(实例讲解)
  • MySQL数据库防止人为误操作的实例讲解
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • python 基础学习第二弹 类属性和实例属性
  • jquery修改属性值实例代码(设置属性值)
  • 奇怪:我的xml文档encoding属性为gb2312,可是实例化为document后,被改为UTF-8
  • C#关于类的只读只写属性实例分析
  • PHP 提取图片img标记中的任意属性的简单实例
  • jQuery中使用data()方法读取HTML5自定义属性data-*实例
  • C#属性(Attribute)用法实例解析
  • C#通过XML节点属性/属性值读取写入XML操作代码实例
  • jquery操作checked与disabled属性多种方法与实例
  • 获取SQL Server表字段的各种属性实例代码
  • android Tween Animation属性设置方法实例
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • 可以有其他两个类的实例同时调用一个java实例的两个方法吗?
  • Bean的作用域及Spring 暴露 Bean实例的方法介绍
  • 请问:类的实例化是怎么一回事?如何进行实例化?
  • Python 3 Tkinter教程之事件Event绑定处理代码实例
  • 万般火急!关于java打印,已经得到printerJob实例,那么怎么通过它得到Pageable实例?
  • Python namedtuple(命名元组)使用实例
  • 类的方法和实例方法,类字段和实例字段有什么不同,在使用上?
  • boost库区间range基本原理及使用实例
  • 既然在定义实例变量的时候可以初始化实例变量的值,那还要构造函数干吗?谢谢!
  • php session_id()函数介绍及代码实例
  • 怎么样判断一个类是否已经被实例化,并关闭这个实例,而且保证系统不退出(详情见内)
  • .NET下 c#通过COM组件操作并导出Excel实例代码
  • 请问在一个servlet里取得一个用singleton模式实现的类实例,那么这个类实例的生命周期是怎样的?
  • java Servlet获取和设置cookie实例代码
  • C#静态变量与实例变量实例分析
  • Mysql Select查询执行流程介绍及实例
  • 实例变量和类变量
  • c++类库Boost::bimap(双向映射)介绍及使用实例
  • 又谁能告诉我实例因该怎么去理解它?????????/


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    c++类库Boost::bimap(双向映射)介绍及使用实例 iis7站长之家