python隐藏类中属性的3种实现方法


Posted in Python onDecember 19, 2019

方法一:

效果图一:

python隐藏类中属性的3种实现方法

代码一:

# 定义一个矩形的类
class Rectangle:
  # 定义初始化方法
  def __init__(self,width,height):
    self.hidden_width = width
    self.hidden_height = height

  # 定义获取width、height的方法
  def get_width(self):
    return self.hidden_width

  def get_height(self):
    return self.hidden_height

  # 定义修改width、height的方法
  def set_width(self,width):
    self.hidden_width = width

  def set_height(self,height):
    self.hidden_height = height

  # 定义一个获取矩形面积的方法
  def get_area(self):
    return self.hidden_width * self.hidden_height

# 创建Rectangle的实例
r_one = Rectangle(3,4)
# 输出打印 r_one的widh
print(r_one.get_width())  # 输出 3
# 输出打印 r_one的area
print(r_one.get_area())  # 输出 12

# 改变width
r_one.set_width(5)
print(r_one.get_area())   # 输出 20

方法二:

效果图二:

python隐藏类中属性的3种实现方法

代码二:

# 可以为对象的属性使用双下划线开头,__xxx
# 双下划线开头的属性,是对象的隐藏属性,隐藏属性只能在类的内部访问,无法通过对象访问
# 其实隐藏属性只不过是Python自动为属性改了一个名字
#  实际上是将名字修改为了,_类名__属性名 比如 __name -> _Person__name
class Person:
  def __init__(self,name):
    self.__name = name

  def get_name(self):
    return self.__name

  def set_name(self , name):
    self.__name = name    

p = Person('孙悟空')

# print(p.__name) # 报错:AttributeError: 'Person' object has no attribute '__name'
         #__开头的属性是隐藏属性,无法通过对象访问
p.__name = '猪八戒' # 这个设置无效,不会报错
print(p._Person__name)
p._Person__name = '沙和尚'

print(p.get_name())

方法三: 常用的

效果图三:

python隐藏类中属性的3种实现方法

代码三:

# 使用__开头的属性,实际上依然可以在外部访问,所以这种方式一般不用
#  一般会将一些私有属性(不希望被外部访问的属性)以_开头
#  一般情况下,使用_开头的属性都是私有属性,没有特殊需要不要修改私有属性
class Person:
  def __init__(self,name):
    self._name = name

  def get_name(self):
    return self._name

  def set_name(self,name):
    self._name = name

p = Person('牛一')

print(p._name)

以上这篇python隐藏类中属性的3种实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python统计一个文本中重复行数的方法
Nov 19 Python
python获取本机外网ip的方法
Apr 15 Python
python语言使用技巧分享
May 31 Python
python+selenium开发环境搭建图文教程
Aug 11 Python
Python字典及字典基本操作方法详解
Jan 30 Python
Pandas实现数据类型转换的一些小技巧汇总
May 07 Python
python+opencv实现高斯平滑滤波
Jul 21 Python
对Python 中矩阵或者数组相减的法则详解
Aug 26 Python
Python Opencv提取图片中某种颜色组成的图形的方法
Sep 19 Python
Django实现网页分页功能
Oct 31 Python
keras .h5转移动端的.tflite文件实现方式
May 25 Python
Django实现随机图形验证码的示例
Oct 15 Python
Python合并2个字典成1个新字典的方法(9种)
Dec 19 #Python
关于Python中定制类的比较运算实例
Dec 19 #Python
在python中利用try..except来代替if..else的用法
Dec 19 #Python
Python字符串的修改方法实例
Dec 19 #Python
python中property和setter装饰器用法
Dec 19 #Python
python装饰器代替set get方法实例
Dec 19 #Python
pandas factorize实现将字符串特征转化为数字特征
Dec 19 #Python
You might like
几款免费开源的不用数据库的php的cms
2010/12/19 PHP
跟我学Laravel之配置Laravel
2014/10/15 PHP
PHP Static延迟静态绑定用法分析
2016/03/16 PHP
PHP实现json_decode不转义中文的方法
2017/05/20 PHP
JS 建立对象的方法
2007/04/21 Javascript
js option删除代码集合
2008/11/12 Javascript
jquery remove方法应用详解
2012/11/22 Javascript
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
2013/04/15 Javascript
javascript父、子页面交互技巧总结
2014/08/08 Javascript
推荐25个超炫的jQuery网格插件
2014/11/28 Javascript
JS实现的3D拖拽翻页效果代码
2015/10/31 Javascript
解读Bootstrap v4 sass设计
2016/05/29 Javascript
JS排序之冒泡排序详解
2017/04/08 Javascript
完美解决UI-Grid表格元素中多个空格显示为一个空格的问题
2017/04/25 Javascript
bootstrap插件treeview实现全选父节点下所有子节点和反选功能
2017/07/21 Javascript
JS switch判断 三目运算 while 及 属性操作代码
2017/09/03 Javascript
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
vue中各选项及钩子函数执行顺序详解
2018/08/25 Javascript
vue+AI智能机器人回复功能实现
2020/07/16 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
Python检测网站链接是否已存在
2016/04/07 Python
举例讲解Python的lambda语句声明匿名函数的用法
2016/07/01 Python
Django应用程序入口WSGIHandler源码解析
2019/08/05 Python
Python中断多重循环的几种方式详解
2020/02/10 Python
Pytorch 使用不同版本的cuda的方法步骤
2020/04/02 Python
Python内置函数property()如何使用
2020/09/01 Python
python调用摄像头的示例代码
2020/09/28 Python
CSS3感应鼠标的背景闪烁和图片缩放动画效果
2014/05/14 HTML / CSS
Ralph Lauren英国官方网站:Ralph Lauren UK
2018/04/03 全球购物
说出ArrayList,Vector, LinkedList的存储性能和特性
2015/01/04 面试题
如何开启linux的ssh服务
2015/02/14 面试题
五一服装活动方案
2014/01/11 职场文书
精彩自我鉴定
2014/01/16 职场文书
办公室员工岗位工作职责
2014/03/10 职场文书
因个人工作失误检讨书
2019/06/21 职场文书
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python