私有化属性(隐藏)

  • 语法:

    • 两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问
  • 使用私有化属性的场景

    1. 把特定的一个属性隐藏起来,不想让类的外部进行直接调用
    2. 我想保护这个属性,不想让属性的值随意的改变,
    3. 保护这个属性,不想让派生类【子类】去继承
  • 要想访问私有变量一般是写两个方法,一个访问,一个修改,由方法去控制访问

class Person:
__age =18 #实例一个私有化属性,属性名字前面加两个下划线
‘’’

#print(Person.__dict__)class Person:__hobby = 'dance'def __init__(self):self.__name = '李四'  # 加两个下划线将此属性私有化,不能再外部直接访问,在类的内部可以访问self.age = 30print(self.__name)#print(self._Person__name)def __str__(self):return '{}的年龄是{},喜欢{}'.format(self.__name, self.age, Person.__hobby)  # 调用私有化属性def change(self, hobby):Person.__hobby = hobbyclass Student(Person):def printInfo(self):# print(self.__name)#访问不了父类中的私有属性print(self.age)passxl = Person()
# print(xl.name)#通过类对象,在外部访问的
print(xl)
xl.change('唱歌')  # 修改私有属性的值
print(xl)
stu = Student()
stu.printInfo()
stu.change('Rap')
print(stu)
# print(xl.hobby)  # 通过实例对象访问类属性
# print(stu.hobby)  # 通过实例对象访问类属性
# print(Person.hobby)  # 通过类对象访问类属性
  • 小结:

    1. 私有化的【实例】属性,不能在外部直接的访问,可以在类的内部随意的使用
    2. 子类不能继承父类的私有化属性,【只能继承父类公共的属性和行为】
    3. 在属性名的前面直接加__,就可以将其私有化
  • 单下划线、 双下划线、 头尾双下划线三者区别

_xxx前面加下划线,以单下划线开头表示的是protected类型的变量,即保护类型只能允许其本身与子类进行访问,不能使用from xxx import *的方式导入
__xxx__前后两个下划线,魔术方法,一般是python自带的,开发者不要创建这类型的方法
xxx_后面单下划线,避免属性名与Python关键字冲突


私有化方法(隐藏)

  • 概述

    • 私有化方法跟私有化属性一样,有些重要的方法,不允许外部调用,防止子类意外重写,把普通的方法设置成私有化方法
    • 私有化方法一般是类内部调用,子类不能继承外部不能调用
  • 语法

class A:
def __myname(self): #在方法名前面加两个下划线
print(‘小明’)

class Animal:def __eat(self):print('吃东西')def run(self):self.__eat()  # 在此调用私有化方法print('飞快地跑')class Bird(Animal):passbird = Bird()
bird.run()

私有化属性-- 私有化方法相关推荐

  1. Python—类私有化属性和方法

    目录 一.私有化属性 语法 特性 特性-1 特性-2 特性-3 二.私有化方法 语法 示例 特性 三.Property属性 实现方式 实现方式-1 示例 实现方式-2 一.私有化属性 语法: 两个下划 ...

  2. Python私有化与poperty方法

    1.私有化 xx: 公有变量 _x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问 __xx:双前置下划线,避免与子类中的属性命名冲突 ...

  3. 浅谈Python类的属性和方法

    浅谈Python类的属性和方法 参考文献 在python中,有私有属性和公有属性,方法我们也一样,他们之间有何区别? 还有类属性和实例属性又是怎么回事? 静态方法和类方法又有什么区别? 我们在工作过程 ...

  4. Python进阶-----面向对象2.0(特有属性和方法与私有属性和方法)

    目录 前言: 1.添加特有属性/方法 示例1:添加特有属性 示例2:添加特有方法 2.私有属性/方法 (1)私有化示例 (2) 私有化属性/方法可以在类的内部使用 (3)强制访问私有化属性/方法 (4 ...

  5. 通过反射创建私有化构造的类,并为私有化属性复制。调用私有化方法

    import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Metho ...

  6. 设计一个笔记本电脑类,属性随意,并且进行属性私有化,对外提供公开的set和get方法。 设计一个可插拔的接口:InsertDrawable,该接口有什么方法自行定义。

    代码 /* 开放型题目:设计一个笔记本电脑类,属性随意,并且进行属性私有化,对外提供公开的set和get方法.设计一个可插拔的接口:InsertDrawable,该接口有什么方法自行定义.设计一个鼠标 ...

  7. Python学习5(生成器、类、属性、方法、私有化、继承、多态)

    生成器 通过列表推导式得到生成器 要创建一个生成器,有很多种方法.第一种方法很简单,只要把一个列表生成式的 [ ] 改成 ( ) In [15]: L = [ x*2 for x in range(5 ...

  8. python私有化属性

    私有化 python的私有化是伪私有化 是通过_类名__变量来重命名的所以外界访问不了 _单下划线表示私有属性和方法,可以在类对象子类访问 __双下划线也是私有属性,只可以在当前类中使用,无法被继承. ...

  9. Python面向对象之私有化属性

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.什么是私有化? 二.私有化的处理-装饰器 三. 继承的案例 四 继承的顺序 五 工资案例 前言 本文主要介绍私有化 ...

最新文章

  1. python scikit learn 封装_python的scikit-learn的主要模块和基本使用
  2. bzoj4773 负环
  3. arm linux gcc 编译,Linux arm-linux-gcc交叉编译环境配置
  4. python能不能用c打开文件_C/C++/Python等 使用二进制模式打开文件与不使用二进制模式的区别...
  5. 机器人蛮王_盖伦:吊打我老婆,蛮王:我也是,他:被老婆打的不敢出塔
  6. android纹理存储,Android:OpenGL存储纹理多长时间?
  7. 设置VS2008 快捷键 快速注释
  8. matplotlib tricks(关闭坐标刻度、坐标轴不可见)
  9. CMU 15-213 Introduction to Computer Systems学习笔记(16) Virtual Memory: Concepts
  10. 删除WIN10右键解压缩菜单
  11. 统计学附录,F分布和t分布表
  12. xp系统打开计算机硬盘分区,如何在xp系统对硬盘进行分区
  13. java程序控制马达_java控制步进电机
  14. 红黑联盟十周年 汇编语言系列教程
  15. iOS常见崩溃以及总结
  16. python中format格式化输出总结
  17. matlab rand函数的用法,matlab中rand函数的用法
  18. 微信小程序开发之——map组件
  19. 详解项目管理中任务、成本、产品三者的关系
  20. http返回码301、302、307、305含义和区别

热门文章

  1. Linux 学习笔记 文件、目录操作与用户群组权限
  2. 《经济学百年》学习笔记(三) 亚当斯密的市场经济理论
  3. 论文总结—app-in-app应用程序生态系统内资源管理风险
  4. java 字体 自适应大小_响应式网页设计:rem、em设置网页字体大小自适应
  5. uniApp 学习笔记总结(一)
  6. 红亚太学链之区块链技术深度剖析第8章
  7. 测试环境和测试分类的介绍
  8. 关于 非分页缓冲池 内存占用过高但任务管理器无程序 的特殊原因
  9. 火山安卓卡片布局器基本使用方式
  10. Oracle OMF(Oracle Managed Files ) 说明