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使用htpasswd实现基本认证授权的例子
Jun 10 Python
python实现矩阵乘法的方法
Jun 28 Python
numpy.linspace 生成等差数组的方法
Jul 02 Python
Python引用计数操作示例
Aug 23 Python
Python+OpenCV实现图像融合的原理及代码
Dec 03 Python
Python3.6实现带有简单界面的有道翻译小程序
Apr 16 Python
六行python代码的爱心曲线详解
May 17 Python
python整合ffmpeg实现视频文件的批量转换
May 31 Python
如何在Cloud Studio上执行Python代码?
Aug 09 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
Dec 04 Python
Python标准库之typing的用法(类型标注)
Jun 02 Python
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
Aug 30 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
WAR3重制版DOTA 5V5初体验
2020/04/09 DOTA
关于php程序报date()警告的处理(date_default_timezone_set)
2013/10/22 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
destoon在各个服务器下设置URL Rewrite(伪静态)的方法
2014/06/21 Servers
php实现scws中文分词搜索的方法
2015/12/25 PHP
php+layui数据表格实现数据分页渲染代码
2019/10/26 PHP
javascript编程起步(第七课)
2007/01/10 Javascript
jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
2013/06/04 Javascript
JQuery弹出层示例可自定义
2014/05/19 Javascript
JavaScript中实现Map的示例代码
2015/09/09 Javascript
微信企业号开发之微信考勤Cookies的使用
2015/09/11 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
echarts饼图扇区添加点击事件的实例
2017/10/16 Javascript
vue-cli 自定义指令directive 添加验证滑块示例
2017/10/19 Javascript
浅析Angular19 自定义表单控件
2018/01/31 Javascript
JS模拟浏览器实现全局搜索功能
2019/09/11 Javascript
通过实例解析json与jsonp原理及使用方法
2020/09/27 Javascript
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
Python实现的数据结构与算法之链表详解
2015/04/22 Python
python获取本地计算机名字的方法
2015/04/29 Python
Python文件操作,open读写文件,追加文本内容实例
2016/12/14 Python
python监控nginx端口和进程状态
2019/09/06 Python
Keras—embedding嵌入层的用法详解
2020/06/10 Python
使用phonegap获取位置信息的实现方法
2017/03/31 HTML / CSS
Spartoo葡萄牙鞋类网站:线上销售鞋履与时尚配饰
2017/01/11 全球购物
什么是java序列化,如何实现java序列化
2012/11/14 面试题
团日活动总结怎么写
2014/06/25 职场文书
办理信用卡收入证明范例
2014/09/13 职场文书
病假证明模板
2015/06/19 职场文书
文艺演出主持词
2015/07/01 职场文书
Mysql MVCC机制原理详解
2021/04/20 MySQL
python数据库批量插入数据的实现(executemany的使用)
2021/04/30 Python
windows安装python超详细图文教程
2021/05/21 Python
Python List remove()实例用法详解
2021/08/02 Python
HTML+JS实现在线朗读器
2022/02/15 Javascript
MySQL远程无法连接的一些常见原因总结
2022/09/23 MySQL