一. 类的私有变量和私有方法
1》   在python 中可以通过在属性变量名前,加上双下划线定义属性为私有属性
 
2》特殊变量命名
a. _xx 以单下划线开头的表示的是protected(受保护的) 类型的变量,即保护类型只能靠允许其本身与子类进行访问。若内部变量表示,如:当使用“from M import” 时,不会将一个下划线开头的对象引入。
 
b.__xx  双下划线的表示的是私有类型的变量。只能允许这个类本身进行访问了,连子类也不可以用于命名一个类属性(类变量),调用时名字被改变(在类 FooBar 内部,__boo 变成 __FooBar__boo,如self.__FooBar__boo)
 
c. 私有变量实例:
#/usr/bin/python
#coding=utf-8
#@Time   :2017/11/7 8:40
#@Auther :liuzhenchuan
#@File   :类的私有变量.py
 
class A(object):
   '''类的私有变量和私有属性'''
    _name = 'liuzhenchuan'
    __sex = 'F'
    def hello(self):
        print self._name
        print self.__sex
    def get_sex(self):
        return self.__sex
a = A()
#
print a._name
#私有变量 __sex 只能在类中被调用,实例化之前的部分是类中,单独调用 a.__sex 报错
# print a.__sex
#私有变量 __sex 可以在自己的方法中调用
a.hello()
#可以把私有变量定义一个方法,进行调用
print a.get_sex()
 
 
class B(A):
    coller = 'yellow'
    def get_coller(self):
        return self.coller
b = B()
print b.coller
#父类中保护类型变量 _name 在子类中可以被调用
print b._name
 
>>>
liuzhenchuan
liuzhenchuan
F
F
##########子类##########
yellow
liuzhenchuan
 
 
二. python 中常用的私有变量
 
####python 中常用的私有变量:
  # __dict__ :类的属性(包含一个字典,由类的数据属性组成)
  # __doc__:类的文档字符串
  # __module__: 定义所在的模块(类的全名是 '__main_.className',如果类位于一个导入模块mymod中那么className.__module__ 等于mymod)
  #__bases__ :类的所有父类构成元素(包含由一个所有父类组成的元组)
 
print dir(a)
#['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__',
# '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__',
#  '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__',
# '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__',
#  '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__',
# '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split',
#  '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode',
# 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha',
# 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust',
# 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust',
# 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith',
#  'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
 
# __doc__ 可以打印出类里的解释说明
print (a.__doc__)
print (a.__class__)
print (a.__dict__)
 
 
>>>
['_A__sex', '__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_name', 'get_sex', 'hello']
类的私有变量和私有属性
<class '__main__.A'>
{}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

python 基础 5.4 类的私有属性和私有方法的更多相关文章

  1. 【python 3.6】类:访问属性及调用方法

    >>> class price(): //定义1个类,用于计算价格 def __init__(self,name,danjia): //初始化方法,定义商品名称和单价 self.na ...

  2. Python基础:新式类的属性访问

    一.概述 二.准备工作 1.讨论对象 2.名词解释 三.实例绑定的属性访问 1.获取属性 一般规则 参考源码 示例验证 2.设置属性 一般规则 参考源码 示例验证 3.删除属性 一般规则 参考源码 示 ...

  3. python基础——使用元类

    python基础——使用元类 type() 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的. 比方说我们要定义一个Hello的class,就写一个hello. ...

  4. Python面向对象之私有属性和私有方法

    01. 应用场景及定义方式 应用场景 在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到 私有属性 就是 对象 不希望公开的 属性 私有方法 就是 对象  ...

  5. python面向对象学习(三)私有属性和私有方法

    目录 1. 应用场景和定义方式 2. 伪私有属性和私有方法 在java或者其他的编程语言中,使用访问修饰符来限制属性和方法的访问级别,一般有public.protected.default.priva ...

  6. 二十三. Python基础(23)--经典类和新式类

    二十三. Python基础(23)--经典类和新式类 ●知识框架   ●接口类&抽象类的实现 # 接口类&抽象类的实现 #①抛出异常法 class Parent(object):    ...

  7. python私有属性和私有方法

    私有属性和私有方法 01. 应用场景及定义方式 应用场景 在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到 私有属性 就是 对象 不希望公开的 属性 私 ...

  8. python (伪)私有属性和私有方法

    1.定义方式 在定义属性或方法时,在属性名或者方法名前增加两个下划线,定义的就是私有属性或方法. 2.为什么要定义私有属性和私有方法 在实际开发中,对象的某些属性或方法只希望在对象的内部被使用,而不希 ...

  9. python-面向对象-06_私有属性和私有方法

    私有属性和私有方法 01. 应用场景及定义方式 应用场景 在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到 私有属性 就是 对象 不希望公开的 属性 私 ...

  10. day16-封装(私有静态属性、私有属性、私有方法、类方法、静态方法)

    # 一: class P: __age = 30 #私有静态属性 def __init__(self,name): self.__name = name #私有属性:属性名前面加上双下划线是私有属性. ...

随机推荐

  1. AtCoder Beginner Contest 084 D - 2017-like Number【数论/素数/前缀和】

    D - 2017-like Number Time limit : 2sec / Memory limit : 256MB Score : 400 points Problem Statement W ...

  2. linux挂载新磁盘、分区和开机自动挂载

    今天在阿里云虚拟主机里新加了一块磁盘,需要单独挂载到centos7. 挂载过程中遇到了不少问题,记录如下: 查看分区 fdisk -l 其中第一个框和第二个框,是已经分好区的磁盘,第三个硬盘没有分区. ...

  3. ASIHTTPRequest实现断点续传

    http://blog.csdn.net/daiyelang/article/category/1377418 ASIHTTPRequest可以实现断点续传.网上有一些介绍类似使用:   [reque ...

  4. 单源最短路Dijstra算法

    Dijstra算法是寻找从某一顶点i出发到大其他顶点的最短路径.Distra算法的思想与Prim算法很像,它收录顶点的规则是按照路径长度递增的顺序收录的.设v0是源顶点,我们要寻找从v0出发到其他任意 ...

  5. JAVA Eclipse创建Android程序界面不显示怎么办

    一般是由于你创建的Android应用程序版本太高导致的,请设置4或以下版本,对于已有的项目,可以在属性-Android中修改目标生成的版本号                               ...

  6. Vue避免 v-if 和 v-for 用在一起

    永远不要把 v-if 和 v-for 同时用在同一个元素上. 一般我们在两种常见的情况下会倾向于这样做: 为了过滤一个列表中的项目 (比如 v-for="user in users" ...

  7. OpenTSDB设计解读

    OpenTSDB是基于HBase存储时间序列数据的一个开源数据库,确切地说,它仅仅是一个HBase的应用而已,其对于时间序列数据的处理能够供其它系统參考和借鉴.本文会针对它在数据库的设计方面展开一些探 ...

  8. 应用程序之TableView简单总结1

    UITableView的代理方法 修改Cell的状态 UITableView常见方法 一.UITableView的代理方法 #pragma mark 每一行的高度 - (CGFloat)tableVi ...

  9. VMware Workstation 永久许可证密钥

    VMware是功能最强大的虚拟机软件,用户可在虚拟机同时运行各种操作系统,进行开发.测试.演示和部署软件,虚拟机中复制服务器.台式机和平板环境,每个虚拟机可分配多个处理器核心.主内存和显存. VMwa ...

  10. js运算【按位非】~

    这个运算符有点意思:按位非[~] 先来几个例子: ~undefined: -1 ~false: -1 ~true: -2 ~10:-11 找出规律了吧~~ 再说一下运用场景: 之前判断字符串是否存在是 ...