成员修饰符就是设置类的成员有些是公开的有些是私有的,公开的是在外部通过对象或者类可以调用,但是私有的只能通过类的内部才可以调用。


  • 静态字段修饰

  1. #!/usr/bin/env python

  2. # _*_coding:utf-8 _*_

  3. class Foo:

  4.    # 公有的静态字段

  5.    ClassMembers = "公开的"

  6.    # 私有的静态字段

  7.    __ClassMembers = "私有的"

  8. # 执行公有的静态字段

  9. print(Foo.ClassMembers)

  10. # 执行私有的静态字段

  11. print(Foo.__ClassMembers)

  1. /usr/bin/python3.5 /home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py

  2. 公开的

  3. Traceback (most recent call last):

  4.  File "/home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py", line 14, in <module>

  5.    print(Foo.__ClassMembers)

  6. AttributeError: type object 'Foo' has no attribute '__ClassMembers'

  7. Process finished with exit code 1

私有的是不能够直接调用的,需要在类中进行调用,如下:

  1. #!/usr/bin/env python

  2. # _*_coding:utf-8 _*_

  3. class Foo:

  4.    # 私有的静态字段

  5.    __ClassMembers = "私有的"

  6.    # 通过类中的方法调用私有的静态字段进行输出

  7.    def Members(self):

  8.        print(Foo.__ClassMembers)

  9. # 创建一个对象

  10. obj = Foo()

  11. # 执行类中的Members方法

  12. obj.Members()

执行结果

  1. /usr/bin/python3.5 /home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py

  2. 私有的

  3. Process finished with exit code 0

普通字段修饰

  1. #!/usr/bin/env python

  2. # _*_coding:utf-8 _*_

  3. class Foo:

  4.    # 类的构造方法

  5.    def __init__(self, url):

  6.        # 普通字段

  7.        self.url = url

  8.        # 私有普通字段

  9.        self.__Blog = url

  10. # 创建一个对象,传入一个值

  11. obj = Foo("http://yw666.blog.51cto.com")

  12. # 普通字段

  13. print(obj.url)

  14. # 私有的普通字段

  15. print(obj.__Blog)

输出

  1. /usr/bin/python3.5 /home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py

  2. http://yw666.blog.51cto.com

  3. Traceback (most recent call last):

  4.  File "/home/yagnwen/文档/Python_code/sublime/Week06/Day04/s2.py", line 22, in <module>

  5.    print(obj.__Blog)

  6. AttributeError: 'Foo' object has no attribute '__Blog'

  7. Process finished with exit code 1

若要输出私有的普通字段,需要在类中调用私有的普通字段进行输出

  1. #!/usr/bin/env python

  2. # _*_coding:utf-8 _*_

  3. class Foo:

  4.    # 类的构造方法

  5.    def __init__(self, url):

  6.        # 私有普通字段

  7.        self.__Blog = url

  8.        # 直接在狗仔方法没输出传入的URL

  9.        print(self.__Blog)

  10. # 创建一个对象,传入一个值

  11. obj = Foo("http://yw666.blog.51cto.com")

输出结果

  1. yangwen@Darker:~$ python3 /home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py

  2. http://ansheng.me

对于私有的成员,只能够在类中进行访问,即使是继承关系也不可以,测试如下:

  1. #!/usr/bin/env python

  2. # _*_coding:utf-8 _*_

  3. class Foo:

  4.    # 父类的构造方法

  5.    def __init__(self):

  6.        # 私有普通字段

  7.        self.__Blog = "http://yw666.blog.51cto.com"

  8. # Bar继承了Foo类,

  9. class Bar(Foo):

  10.    # 由于Bar类没有构造方法,所以会执行他父类的构造方法

  11.    # 创建一个类方法fetch

  12.    def fetch(self):

  13.        # 输出self.__Blog

  14.        print(self.__Blog)

  15. # 创建一个对象

  16. obj = Bar()

  17. # 执行类中的fetch方法

  18. obj.fetch()

输出

  1. yangwen@Darker:~$ python3 /home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py

  2. Traceback (most recent call last):

  3.  File "/home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py", line 26, in <module>

  4.    obj.fetch()

  5.  File "/home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py", line 20, in fetch

  6.    print(self.__Blog)

  7. AttributeError: 'Bar' object has no attribute '_Bar__Blog'

对于普通方法、静态方法类方法也是如此,只要成员前面加两个下划线就代表是私有的,即外部不能够访问,只有内部才可以访问。

通过特殊的方法去访问类中的私有成员

  1. #!/usr/bin/env python

  2. # _*_coding:utf-8 _*_

  3. class Foo:

  4.    # 父类的构造方法

  5.    def __init__(self):

  6.        # 私有普通字段

  7.        self.__Blog = "http://yw666.blog.51cto.com"

  8. # 创建一个对象

  9. obj = Foo()

  10. # 通过特殊的方法访问

  11. print(obj._Foo__Blog)

  12. # 一个下划线,一个类名,私有的变量名

输出

  1. ansheng@Darker:~$ python3 /home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py

  2. http://yw666.blog.51cto.com

Python面向对象成员修饰符相关推荐

  1. Python学习 :面向对象 -- 成员修饰符

    成员修饰符 两种成员 - 公有成员 - 私有成员, __字段名 - 无法直接访问,只能通过内部方法来间接访问私有成员 简例:公有成员与私有成员  class Info:country = '中国' # ...

  2. 笔记整理3----Java语言高级(三)11 综合练习+12 面向对象-static变量 与 代码块+13 面向对象-继承与抽象类+14 面向对象-接口与多态+15 面向对象-包修饰符

    11 综合练习+12 面向对象-static变量 与 代码块+13 面向对象-继承与抽象类+14 面向对象-接口与多态+15 面向对象-包&修饰符 第11天 综合练习 今日内容介绍 综合练习 ...

  3. 14.11类的成员修饰符

    成员修饰符 类的所有成员分为:字段,方法 公有成员,在任何地方都能访问 私有成员,只有在类的内部才能访问 私有成员和公有成员的定义不同:私有成员命名时,前两个字符是下划线.(特殊成员除外,例如:ini ...

  4. C#基础--类/接口/成员修饰符,多态、重载、重写,静态和非静态

    C#基础--类/接口/成员修饰符,多态.重载.重写,静态和非静态 类/接口/成员修饰符 C#修饰符---接口: 接口默认访问符是internal 接口的成员默认访问修饰符是public C#修饰符-- ...

  5. C#的类修饰符和成员修饰符

    一.类修饰符 类修饰符:public.internal. partial.abstract.sealed.static.new.protected.private.protected internal ...

  6. Python 字符串常见的语句,和练习题,字符串练习题 Python 切片函数修饰符 #精度和进制Python 字符串一些语句练课件练习题

    字符串练习题 Python 切片 函数修饰符 #精度和进制 Python 字符串一些语句练 课件练习题 4,.by     字符串的替换         方法    描述         replac ...

  7. java函数修饰符_Java 函数 面向对象,修饰符,类,构造方法,this

    1.函数 函数就是定义在类中,具有特定功能的一段小程序. 在面向对象编程的语言中,函数也叫方法. 2.函数的格式 修饰符 返回值类型 函数名(参数类型 实际参数,....) { 执行语句; retur ...

  8. Java学习系列(四)Java面向对象之修饰符、封装、继承、多态详解

    今天内容比较多,直接步入正题吧. 类和对象的定义 类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起.而对象是具有类类型的变量,存在于堆内存中.类是对象的抽象,而对 ...

  9. Java面向对象之修饰符、封装、继承、多态详解

    类和对象的定义 类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起.而对象是具有类类型的变量,存在于堆内存中.类是对象的抽象,而对象是类的具体实例.类是抽象的,不占 ...

  10. python中函数修饰符_python中的函数修饰符

    首先,什么是函数修饰符?函数修饰符就是对原有函数做一层包装.比如有以下两个函数: def func1(): print 'I am function func1' def func2(): print ...

最新文章

  1. 《Greenplum企业应用实战》一导读
  2. 陈启峰:人工智能生成图像技术,未来或能取代电影特效
  3. openStack controller 管理网口TX数据量非常大 网络总是丢包
  4. pandas 根据列名索引多列数据_Pandas 数据聚合与分组运算[groupby+apply]速查笔记
  5. 从入门到精通 - Fayson带你玩转CDH
  6. Mac OS X 下 Eclipse 安装 SVN 插件 subclipse 及JavaHL 方法
  7. matlab lte rsrp,为什么选择 FieldFox 手持式分析仪?- 更宽带宽,更高精度
  8. οnchange相当于前端js函数,可以实现前端实时更新以及修改验证
  9. GIS:深圳独立坐标系与国家2000坐标系互转教程
  10. 关于【软件测试-自动化测试之面试技巧和注意事项】——侃侃而谈
  11. 9 使用AD滴泪与敷铜
  12. 多测师肖sir_高级金牌讲师_项目数据
  13. Dell Systems Management Tools download
  14. top,ps,pstree工具介绍及举例
  15. 20年寒假实习面经(中科院自动化所、Momenta、百度大搜、字节跳动等)
  16. linux下java导出execl_POI实现导出EXCEL详解
  17. css 鼠标移入悬浮效果
  18. BIM计算-属于自己的减肥小程序
  19. 自动化抢购退烧药,口罩,抗原教程
  20. 华为H3C交换机+Radius+mysql Radius认证认证方案,嵌入式客户端代码,配置(上:认证方案)

热门文章

  1. save与persist差别
  2. CMD获取当前目录的绝对路径
  3. VC++/MFC学习笔记(二)
  4. Easyui清除tree的选中
  5. MVC学习笔记----缓存
  6. IOS开发--第三阶段--微博(1)文档
  7. POJ2806 Square
  8. Mac python3连接mysql
  9. 父组件直接触发子组件中的函数
  10. 如何开发一款堪比APP的微信小程序(腾讯内部团队分享)