Python面向对象成员修饰符
成员修饰符就是设置类的成员有些是公开的有些是私有的,公开的是在外部通过对象或者类可以调用,但是私有的只能通过类的内部才可以调用。
静态字段修饰
#!/usr/bin/env python
# _*_coding:utf-8 _*_
class Foo:
# 公有的静态字段
ClassMembers = "公开的"
# 私有的静态字段
__ClassMembers = "私有的"
# 执行公有的静态字段
print(Foo.ClassMembers)
# 执行私有的静态字段
print(Foo.__ClassMembers)
/usr/bin/python3.5 /home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py
公开的
Traceback (most recent call last):
File "/home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py", line 14, in <module>
print(Foo.__ClassMembers)
AttributeError: type object 'Foo' has no attribute '__ClassMembers'
Process finished with exit code 1
私有的是不能够直接调用的,需要在类中进行调用,如下:
#!/usr/bin/env python
# _*_coding:utf-8 _*_
class Foo:
# 私有的静态字段
__ClassMembers = "私有的"
# 通过类中的方法调用私有的静态字段进行输出
def Members(self):
print(Foo.__ClassMembers)
# 创建一个对象
obj = Foo()
# 执行类中的Members方法
obj.Members()
执行结果
/usr/bin/python3.5 /home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py
私有的
Process finished with exit code 0
普通字段修饰
#!/usr/bin/env python
# _*_coding:utf-8 _*_
class Foo:
# 类的构造方法
def __init__(self, url):
# 普通字段
self.url = url
# 私有普通字段
self.__Blog = url
# 创建一个对象,传入一个值
obj = Foo("http://yw666.blog.51cto.com")
# 普通字段
print(obj.url)
# 私有的普通字段
print(obj.__Blog)
输出
/usr/bin/python3.5 /home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py
http://yw666.blog.51cto.com
Traceback (most recent call last):
File "/home/yagnwen/文档/Python_code/sublime/Week06/Day04/s2.py", line 22, in <module>
print(obj.__Blog)
AttributeError: 'Foo' object has no attribute '__Blog'
Process finished with exit code 1
若要输出私有的普通字段,需要在类中调用私有的普通字段进行输出
#!/usr/bin/env python
# _*_coding:utf-8 _*_
class Foo:
# 类的构造方法
def __init__(self, url):
# 私有普通字段
self.__Blog = url
# 直接在狗仔方法没输出传入的URL
print(self.__Blog)
# 创建一个对象,传入一个值
obj = Foo("http://yw666.blog.51cto.com")
输出结果
yangwen@Darker:~$ python3 /home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py
http://ansheng.me
对于私有的成员,只能够在类中进行访问,即使是继承关系也不可以,测试如下:
#!/usr/bin/env python
# _*_coding:utf-8 _*_
class Foo:
# 父类的构造方法
def __init__(self):
# 私有普通字段
self.__Blog = "http://yw666.blog.51cto.com"
# Bar继承了Foo类,
class Bar(Foo):
# 由于Bar类没有构造方法,所以会执行他父类的构造方法
# 创建一个类方法fetch
def fetch(self):
# 输出self.__Blog
print(self.__Blog)
# 创建一个对象
obj = Bar()
# 执行类中的fetch方法
obj.fetch()
输出
yangwen@Darker:~$ python3 /home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py
Traceback (most recent call last):
File "/home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py", line 26, in <module>
obj.fetch()
File "/home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py", line 20, in fetch
print(self.__Blog)
AttributeError: 'Bar' object has no attribute '_Bar__Blog'
对于普通方法、静态方法类方法也是如此,只要成员前面加两个下划线就代表是私有的,即外部不能够访问,只有内部才可以访问。
通过特殊的方法去访问类中的私有成员
#!/usr/bin/env python
# _*_coding:utf-8 _*_
class Foo:
# 父类的构造方法
def __init__(self):
# 私有普通字段
self.__Blog = "http://yw666.blog.51cto.com"
# 创建一个对象
obj = Foo()
# 通过特殊的方法访问
print(obj._Foo__Blog)
# 一个下划线,一个类名,私有的变量名
输出
ansheng@Darker:~$ python3 /home/yangwen/文档/Python_code/sublime/Week06/Day04/s2.py
http://yw666.blog.51cto.com
Python面向对象成员修饰符相关推荐
- Python学习 :面向对象 -- 成员修饰符
成员修饰符 两种成员 - 公有成员 - 私有成员, __字段名 - 无法直接访问,只能通过内部方法来间接访问私有成员 简例:公有成员与私有成员 class Info:country = '中国' # ...
- 笔记整理3----Java语言高级(三)11 综合练习+12 面向对象-static变量 与 代码块+13 面向对象-继承与抽象类+14 面向对象-接口与多态+15 面向对象-包修饰符
11 综合练习+12 面向对象-static变量 与 代码块+13 面向对象-继承与抽象类+14 面向对象-接口与多态+15 面向对象-包&修饰符 第11天 综合练习 今日内容介绍 综合练习 ...
- 14.11类的成员修饰符
成员修饰符 类的所有成员分为:字段,方法 公有成员,在任何地方都能访问 私有成员,只有在类的内部才能访问 私有成员和公有成员的定义不同:私有成员命名时,前两个字符是下划线.(特殊成员除外,例如:ini ...
- C#基础--类/接口/成员修饰符,多态、重载、重写,静态和非静态
C#基础--类/接口/成员修饰符,多态.重载.重写,静态和非静态 类/接口/成员修饰符 C#修饰符---接口: 接口默认访问符是internal 接口的成员默认访问修饰符是public C#修饰符-- ...
- C#的类修饰符和成员修饰符
一.类修饰符 类修饰符:public.internal. partial.abstract.sealed.static.new.protected.private.protected internal ...
- Python 字符串常见的语句,和练习题,字符串练习题 Python 切片函数修饰符 #精度和进制Python 字符串一些语句练课件练习题
字符串练习题 Python 切片 函数修饰符 #精度和进制 Python 字符串一些语句练 课件练习题 4,.by 字符串的替换 方法 描述 replac ...
- java函数修饰符_Java 函数 面向对象,修饰符,类,构造方法,this
1.函数 函数就是定义在类中,具有特定功能的一段小程序. 在面向对象编程的语言中,函数也叫方法. 2.函数的格式 修饰符 返回值类型 函数名(参数类型 实际参数,....) { 执行语句; retur ...
- Java学习系列(四)Java面向对象之修饰符、封装、继承、多态详解
今天内容比较多,直接步入正题吧. 类和对象的定义 类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起.而对象是具有类类型的变量,存在于堆内存中.类是对象的抽象,而对 ...
- Java面向对象之修饰符、封装、继承、多态详解
类和对象的定义 类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起.而对象是具有类类型的变量,存在于堆内存中.类是对象的抽象,而对象是类的具体实例.类是抽象的,不占 ...
- python中函数修饰符_python中的函数修饰符
首先,什么是函数修饰符?函数修饰符就是对原有函数做一层包装.比如有以下两个函数: def func1(): print 'I am function func1' def func2(): print ...
最新文章
- 《Greenplum企业应用实战》一导读
- 陈启峰:人工智能生成图像技术,未来或能取代电影特效
- openStack controller 管理网口TX数据量非常大 网络总是丢包
- pandas 根据列名索引多列数据_Pandas 数据聚合与分组运算[groupby+apply]速查笔记
- 从入门到精通 - Fayson带你玩转CDH
- Mac OS X 下 Eclipse 安装 SVN 插件 subclipse 及JavaHL 方法
- matlab lte rsrp,为什么选择 FieldFox 手持式分析仪?- 更宽带宽,更高精度
- οnchange相当于前端js函数,可以实现前端实时更新以及修改验证
- GIS:深圳独立坐标系与国家2000坐标系互转教程
- 关于【软件测试-自动化测试之面试技巧和注意事项】——侃侃而谈
- 9 使用AD滴泪与敷铜
- 多测师肖sir_高级金牌讲师_项目数据
- Dell Systems Management Tools download
- top,ps,pstree工具介绍及举例
- 20年寒假实习面经(中科院自动化所、Momenta、百度大搜、字节跳动等)
- linux下java导出execl_POI实现导出EXCEL详解
- css 鼠标移入悬浮效果
- BIM计算-属于自己的减肥小程序
- 自动化抢购退烧药,口罩,抗原教程
- 华为H3C交换机+Radius+mysql Radius认证认证方案,嵌入式客户端代码,配置(上:认证方案)