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__ 对象或类 ...
随机推荐
- COGS 11. 运输问题1
★★☆ 输入文件:maxflowa.in 输出文件:maxflowa.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] 一个工厂每天生产若干商品,需运输到 ...
- pat甲级1016
1016 Phone Bills (25)(25 分) A long-distance telephone company charges its customers by the following ...
- 金庸和古龙,Netweaver和微服务,以及SAP Hybris Revenue Cloud
这周Jerry在长沙客户现场待了几天,感谢易总和彩亮的款待.终于有机会和关注这个公众号的一些CRM顾问们进行线下互动,感觉很不错.得知公众号里某些文章帮助顾问们解决了一些工作中的实际问题,我很高兴.感 ...
- OpenGL位图变形问题
因为初次接触OpenGL,图形学也后悔当初在学校没有认真学,隐约记得教授当时讲过图像变形的问题,而且我的bitmap也是2的N次方:16*16的,在网络上找到的大多都是一句话:“视口的纵横比一般和视景 ...
- [OS] 可执行文件的装载
http://www.jianshu.com/p/e1300e7a4c48 1. 虚拟内存 在早期的计算机中,程序是直接运行在物理内存上的,程序在运行时访问的地址就是物理地址.可是,当计算机中同时运行 ...
- make 出错: /usr/bin/ld: cannot find -lrt
make 出错:/usr/bin/ld: cannot find -lrtcollect2: ld returned 1 exit statusmake: *** [page_parser] Erro ...
- SyntaxError: Non-ASCII character ‘\xe5′ in file和在代码中插入中文,python中文注释
SyntaxError: Non-ASCII character '\xe7' in file 出现这种错误的原因是程序中的编码出问题了,只要在程序的最前面加上 #coding: utf-8 重新保存 ...
- ifup/ifdown ethX 和 ifconfig ehtX up/down的区别
相同点:[启用]和[禁止]网卡 ifup ethX 和 ifconfig ethX up 用来启用网卡设备 ifdown ethX 和 ifconfig ethX ...
- modprobe与insmod的区别
linux设备驱动有两种加载方式insmod和modprobe,下面谈谈它们用法上的区别1.insmod一次只能加载特定的一个设备驱动,且需要驱动的具体地址.写法为: insmod dr ...
- 简单ssh
#!/usr/bin/env python #-*- coding:utf-8 -*- # datetime:2019/5/22 14:20 # software: PyCharm #服务端 impo ...