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装饰器入门学习教程(九步学习)
Jan 28 Python
Python 对象中的数据类型
May 13 Python
Python使用struct处理二进制的实例详解
Sep 11 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
Mar 05 Python
如何使用Python标准库进行性能测试
Jun 25 Python
Python利用WMI实现ping命令的例子
Aug 14 Python
pycharm配置git(图文教程)
Aug 16 Python
python文件和文件夹复制函数
Feb 07 Python
pyspark 随机森林的实现
Apr 24 Python
Django def clean()函数对表单中的数据进行验证操作
Jul 09 Python
如何基于Python实现word文档重新排版
Sep 29 Python
python 装饰器的使用示例
Oct 10 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表单提交表单名称含有点号(.)则会被转化为下划线(_)
2011/12/14 PHP
PHP APC配置文件2套和参数详解
2014/06/11 PHP
php返回字符串中所有单词的方法
2015/03/09 PHP
PHP易混淆知识整理笔记
2015/09/24 PHP
PHP实现连接设备、通讯和发送命令的方法
2015/10/13 PHP
setTimeout()与setInterval()方法区别介绍
2013/12/24 Javascript
JS原型对象的创建方法详解
2016/06/16 Javascript
Form表单按回车自动提交表单的实现方法
2016/11/18 Javascript
Angular2学习教程之组件中的DOM操作详解
2017/05/28 Javascript
使用node.js对音视频文件加密的实例代码
2017/08/30 Javascript
JavaScript中如何判断一个值的类型
2017/09/15 Javascript
详解JavaScript 中 if / if...else...替换方式
2018/07/15 Javascript
vuejs实现折叠面板展开收缩动画效果
2018/09/06 Javascript
详解JS取出两个数组中的不同或相同元素
2019/03/20 Javascript
vue-video-player 断点续播的实现
2021/02/01 Vue.js
从头学Python之编写可执行的.py文件
2017/11/28 Python
详解python深浅拷贝区别
2019/06/24 Python
python opencv将表格图片按照表格框线分割和识别
2019/10/30 Python
python 实现检验33品种数据是否是正态分布
2019/12/09 Python
Python读写操作csv和excle文件代码实例
2020/03/16 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
2020/04/28 Python
详解CSS3 弹性布局快速入门
2019/06/06 HTML / CSS
戴尔美国官方折扣店:Dell Outlet
2018/02/13 全球购物
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
Pottery Barn阿联酋:购买家具、家居装饰及更多
2019/12/08 全球购物
九年级家长会邀请函
2014/01/15 职场文书
《陶罐和铁罐》教学反思
2014/02/19 职场文书
2014年安全生产大检查方案
2014/05/13 职场文书
工程安全生产协议书
2014/11/21 职场文书
保送生自荐信
2015/03/06 职场文书
求职信格式范文
2015/03/19 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
三严三实·严以用权心得体会
2016/01/12 职场文书
导游词之江南园林狮子林
2019/09/16 职场文书
python3+PyQt5+Qt Designer实现界面可视化
2021/06/10 Python
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS