补充内容:封装

私有化封装 private
受保护的封装 protected
公共的封装 public

注意:python目前不支持设定受保护的成员,但是开发者由约定的使用方式

受保护的封装:在成员名称前面加一个下划线
受保护的目的:仅允许成员在当前类/对象或者子类/子对象中访问,外部禁止

-----------------------------------------------------------------------------------------------------
                   类/对象内      子类/子对象中     类/对象外
私有化         √                        ×                           ×

受保护         √                        √                           √(实际上不允许)

公共的         √                        √                           √

实例

 #父类
class LiuBei:
#属性
__wife = ('甘夫人','糜夫人','孙尚香')#私有化
_money = ''#受保护(不是语法是约定)
skin = '黄色'# 公共
#方法
#吃饭
def eat(self):#公共的
print('打死我***也不吃~ 真香啊~')
#学习
def __study(self):#私有化
print('好好学习天天向上')
#做鞋
def _makeshoes(self):
print('编草鞋')
#内部测试受保护成员
def test(self):
print(self._money)
self._makeshoes()
#子类
class LiuShan(LiuBei):
pass #检测私有化和公共的封装
#实例化对象
ls = LiuShan()
#print(ls.wife) #私有成员无法在子类.子对象中调用
#ls.study()#私有成员无法在子类.子对象中调用
#输出结果:AttributeError: 'LiuShan' object has no attribute 'wife' print(ls.skin)#公共的成员可以在子类/子对象中调用
#输出结果:黄色
ls.eat()#公共的成员可以在子类/子对象中调用
#输出结果:打死我***也不吃~ 真香啊~ #调用受保护的成员
#实例化刘备的对象
lb = LiuBei() #在类和对向外(随便访问)
print(lb._money)
#输出结果:100
lb._makeshoes()
#输出结果:编草鞋 #在类和对象的内部(随便访问)
lb.test()
'''
输出结果:
100
编草鞋
''' #约定受保护的封装,不要这样去访问
#在子类和子对象中
print(ls._money)
#输出结果:100
ls._makeshoes()
#输出结果:编草鞋

受保护的封装 protected的更多相关文章

  1. 了解protected 以及公用、私有和受保护的继承

    protected成员 可以认为protected访问标号是private 和public 的混合: 1.像private成员一样,protected成员不能被类的用户访问. 2.像public成员一 ...

  2. 【转载】如何破解受保护的excel密码

    [工具] 1.电脑一台(安装有Microsoft Excel) 2.受保护excel一个 [步骤] 1.首先,打开受保护的Excel表格,按"ALT"+"F11" ...

  3. PHP受保护的类和私有类什么区别

    受保护的继承后可以访问,私有的只能在该类中访问,不会被继承访问class Man{ protected $name='lee';//受保护 private $age=123;//私有 function ...

  4. System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

    系统debug时出现错误,System.AccessViolationException: 尝试读取或写入受保护的内存.这通常指示其他内存已损坏. Attempted to read or write ...

  5. 编写高质量代码改善C#程序的157个建议——建议49:在Dispose模式中应提取一个受保护的虚方法

    建议49:在Dispose模式中应提取一个受保护的虚方法 在标准的Dispose模式中,真正的IDisposable接口的Dispose方法并没有做实际的清理工作,它其实是调用了下面的这个带bool参 ...

  6. C# 调用OpenCVSharp报错“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”

    一.描述问题 当托管代码调用非托管代码的时候,经常会出现如下报错:“尝试读取或写入受保护的内存.这通常指示其他内存已损坏”. 二.原因分析 由于非托管代码的内存指针的回收是由非托管代码自身手动完成的, ...

  7. Python - 面向对象(三)公共变量,受保护变量,私有变量

    前言 在Python的类里面,所有属性和方法默认都是公共的:但Python也可以设置受保护.私有类型的变量or方法 受保护类型的变量.方法 一般称为:protected变量 #!/usr/bin/en ...

  8. asp.net报错“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”的解决办法

    来源:http://ajxfxb.blog.163.com/blog/static/56675086201411634336878/ 作者是:没完没了的工作 asp.net报错“尝试读取或写入受保护的 ...

  9. SQLServer2012在登录远程服务器实例时报错:尝试读取或写入受保护的内存

    SQLServer2012在登录远程服务器实例时报错:尝试读取或写入受保护的内存.这通常指示其它内存已损坏.(System.Data). 而登录本地数据库实例则能顺利登入,不存在上述问题. 试一试重置 ...

随机推荐

  1. UVA 10951 - Polynomial GCD(数论)

    UVA 10951 - Polynomial GCD 题目链接 题意:给定两个多项式,求多项式的gcd,要求首项次数为1,多项式中的运算都%n,而且n为素数. 思路:和gcd基本一样,仅仅只是传入的是 ...

  2. Python序列——Unicode

    Unicode是什么 Python中的Unicode 编码与解码 在应用中使用Unicode的建议 1. Unicode是什么 Unicode是对字符进行编码的一种标准.而utf8或者utf-8是根据 ...

  3. cannot find -lbz2 解决方法

    sudo yum install -y bzip2* 或者sudo apt-get install bzip2* 还是报错就找到libbz2.so.1,建立连接或者复制到 /usr/lib/libbz ...

  4. eclipse订制快捷键

    步骤: 1.window-preference. 2.在(1)处输入keys,在(2)处输入命令的原来的快捷键,方便找到Binding,在(3)处输入自定义的快捷键.点击“apply and clos ...

  5. codeforces B. Bear and Strings 解题报告

    题目链接:http://codeforces.com/problemset/problem/385/B 题目意思:给定一条只有小写英文组成的序列,需要找出至少包含一个“bear”的单词的子序列个数.注 ...

  6. codeforces A. Point on Spiral 解题报告

    题目链接:http://codeforces.com/problemset/problem/279/A 题目意思:给出一个坐标点(x, y),问当从(0, 0) 开始到达该点转过的拐角有多少个.(拐角 ...

  7. MySQL丨分页查询

    直奔主题 一.sql语句:select * from table limit startPageNum,everyPageNum 1)语句解析: table:你要查询的表 startPageNum:从 ...

  8. LA-5059(组合游戏)

    题意: 有n堆石子,分别有a1,a2,...,an个,两个游戏者轮流操作,每次可以选一堆m拿走至少一个且不超过一半的石子,谁不能拿石子就算输; 思路: a1太大打印sg表找规律,然后就是异或和了; A ...

  9. js中this 的四种用法

    this 在函数执行时,this 总是指向调用该函数的对象.要判断 this 的指向,其实就是判断 this 所在的函数属于谁. 在<javaScript语言精粹>这本书中,把 this  ...

  10. Winform安装包出现无法访问网络位置

    1.原因:安装包的安装路径出现了问题 2.如下图:错误路径 3.如下图:正确路径