Python面向对象之私有方法(4)
类里面有很多成员修饰符,用来修饰各种属性
(1)私有属性,只有内部的方法可以访问
class Foo:
xo = 'xo'#表明是公共的,内部外部都可以访问
__ox = '私有属性'#私有属性,只有内部方法可以访问
def __init__(self):
self.__name = 'Jay'#私有属性,只有内部方法可以访问
def fetch(self,bk):
print(bk) print(Foo.__ox)#里面也可以写self.__ox
#print(Foo.__xo)#前面加了两个下划线,是私有属性,这样调用会报错,只有内部的方法可以访问
obj=Foo()
obj.fetch('bb')
结果如图,
如果子类继承了父类Foo,在子类的方法里面调用了父类的私有属性,也是访问不了的,会报错
如果在方法前面加了两个下划线也是不能被实例访问的,只能间接访问
class Foo:
xo = 'xo'#表明是公共的,内部外部都可以访问
__ox = '私有属性'#私有属性,只有内部方法可以访问
def __init__(self): self.__name = 'Jay'#私有属性,只有内部方法可以访问
def __fetch(self,bk):#私有方法
print(bk)
print(Foo.__ox)#里面也可以写self.__ox
def fetch(self):
self.__fetch('bob') obj= Foo()
#print(obj.__fetch)这样会报错,这是私有方法
obj.fetch()
结果如图
私有属性也有一种特殊方法在外面访问
class Foo:
xo = 'xo'#表明是公共的,内部外部都可以访问
__ox = '私有属性'#私有属性,只有内部方法可以访问
def __init__(self): self.__name = 'Jay'#私有属性,默认只有内部方法可以访问
def __fetch(self,bk):#私有方法
print(bk)
print(self.__ox)#里面也可以写self.__ox
def fetch(self):
self.__fetch('bob') obj= Foo()
print(obj._Foo__name)#引用内部方法的特殊语法
这样就可以访问私有属性了,但这种方法不建议
Python面向对象之私有方法(4)的更多相关文章
- Python面向对象05 /私有成员、类方法、静态方法、属性、isinstance/issubclass
Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/issubclass 目录 Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/is ...
- Python面向对象之私有属性和方法
私有属性与私有方法 应用场景 在实际开发中,对象的某些属性或者方法 可能只希望在对象的内部被使用,而不希望在外部被访问到: 私有属性 就是对象不希望公开的属性: 私有方法 就是对象不希望公开的方法: ...
- Python面向对象之私有属性和私有方法
01. 应用场景及定义方式 应用场景 在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到 私有属性 就是 对象 不希望公开的 属性 私有方法 就是 对象 ...
- python 面向对象、特殊方法与多范式、对象的属性及与其他语言的差异
1.python 面向对象 文章内容摘自:http://www.cnblogs.com/vamei/archive/2012/06/02/2532018.html 1.__init__() 创建对 ...
- Python面向对象之内置方法
1.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 issubclass(sub, s ...
- python为什么有私有方法和变量
1. 访问安全,其实也没有决定的安全 >>> class humer(object): ... def __init__(self, name): ... self.name = n ...
- Python面向对象之魔术方法
__str__ 改变对象的字符串显示.可以理解为使用print函数打印一个对象时,会自动调用对象的__str__方法 class Student: def __init__(self, name, a ...
- Python面向对象 | 双下方法
定义:双下方法是特殊方法,他是解释器提供的.由双下划线+方法名+双下划线 .它具有特殊意义的方法,双下方法主要是python源码程序员使用的,我们在开发中尽量不要使用双下方法,但是深入研究双下方法,更 ...
- Python 面向对象(二) 特殊方法
一些Python特殊方法的汇总 __bases__ 类的基类,返回元祖__base__ 类的基类,也叫父类__call__ '类名()',类名加括号调用时执行的语句__class__ 对象或类 ...
随机推荐
- Shell脚本 - 用来检查memcache并自动重启生效脚本
#!/bin/sh#check memcache process and restart if downmm_bin="/usr/local/bin/memcached"mm_lo ...
- 【洛谷4884】多少个1?(BSGS)
点此看题面 大致题意: 求满足\(个111...111(N\text{个}1)\equiv K(mod\ m)\)的最小\(N\). 题目来源 这题是洛谷某次极不良心的月赛的\(T1\),当时不会\( ...
- ETL工具--DataX3.0实战
DataX是一个在异构的数据库/文件系统之间高速交换数据的工具,实现了在任意的数据处理系统(RDBMS/Hdfs/Local filesystem)之间的数据交换,由淘宝数据平台部门完成. DataX ...
- 简述apache,php,mysql三者的关系
转自:http://blog.csdn.net/w1365966490/article/details/8218959 Apache web 服务器软件.同类产品有微软的 IIS 等.功能是让某台电脑 ...
- sass安装更新及卸载方法
在 Windows 平台下安装 Ruby 需要先有 Ruby 安装包,大家可以到 Ruby 的官网(http://rubyinstaller.org/downloads)下载对应需要的 Ruby 版本 ...
- z-index、absolute、marquee滚动条的问题
1.z-index 层次叠加 ,元素叠加,谁的权重大谁就在上面 1).父级出现position:relation:的时候,失效: 2).层叠元素出现float的时候失效: 3).层次元素也得设置pos ...
- idea右侧的工具栏不见,包括maven以及其他
通用,设置后右侧工具栏可见 可以通过view-->windows tool看到maven的
- UITableView 优化总结
最近在微博上看到一个很好的开源项目VVeboTableViewDemo,是关于如何优化UITableView的.加上正好最近也在优化项目中的类似朋友圈功能这块,思考了很多关于UITableView的优 ...
- 初识Java程序,编写简单代码?
Dear All: 初识Java程序,编写简单代码? 首先小编在这里说下我们今天编写Java程序使用的是 eclipse 开发工具! 1.下载eclipse 官网地址:http://www.eclip ...
- 转载:jsonp详解
json相信大家都用的多,jsonp我就一直没有机会用到,但也经常看到,只知道是“用来跨域的”,一直不知道具体是个什么东西.今天总算搞明白了.下面一步步来搞清楚jsonp是个什么玩意. 同源策略 首先 ...