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使用新浪微博api上传图片到微博示例
Jan 10 Python
python原始套接字编程示例分享
Feb 21 Python
Python语言实现将图片转化为html页面
Dec 06 Python
python 动态加载的实现方法
Dec 22 Python
pandas 两列时间相减换算为秒的方法
Apr 20 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
Jan 17 Python
Pycharm以root权限运行脚本的方法
Jan 19 Python
Python元组知识点总结
Feb 18 Python
解决Django中调用keras的模型出现的问题
Aug 07 Python
python给图像加上mask,并提取mask区域实例
Jan 19 Python
Pycharm的Available Packages为空的解决方法
Sep 18 Python
python 常用的异步框架汇总整理
Jun 18 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 __autoload函数(自动载入类文件)的使用方法
2012/02/04 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
2015/12/22 PHP
PHP内核学习教程之php opcode内核实现
2016/01/27 PHP
PHP中类属性与类静态变量的访问方法示例
2016/07/13 PHP
PHP中常用的魔术方法
2017/04/28 PHP
php实现将二维关联数组转换成字符串的方法详解
2017/07/31 PHP
解决php extension 加载顺序问题
2019/08/16 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
跟我学习javascript的for循环和for...in循环
2015/11/18 Javascript
深入理解jQuery中的事件冒泡
2016/05/24 Javascript
jQuery控制div实现随滚动条滚动效果
2016/06/07 Javascript
JavaScript学习小结之使用canvas画“哆啦A梦”时钟
2016/07/24 Javascript
总结AngularJS开发者最常犯的十个错误
2016/08/31 Javascript
jquery  实现轮播图详解及实例代码
2016/10/12 Javascript
js获取指定时间的前几秒
2017/04/05 Javascript
JavaScript数据结构之二叉查找树的定义与表示方法
2017/04/12 Javascript
详解axios在node.js中的post使用
2017/04/27 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
2017/11/22 Javascript
vue中引用阿里字体图标的方法
2018/02/10 Javascript
自定义vue组件发布到npm的方法
2018/05/09 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
javascript实现简易聊天室
2019/07/12 Javascript
[49:17]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第三场 1月26日
2021/03/11 DOTA
Python函数嵌套实例
2014/09/23 Python
Python实现OpenCV的安装与使用示例
2018/03/30 Python
Django 自动生成api接口文档教程
2019/11/19 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
2019/11/28 Python
德国BA保镖药房韩文网:kr.ba.de
2017/09/04 全球购物
亚洲领先的设计购物网站:Pinkoi
2020/11/26 全球购物
动物科学专业求职信
2014/07/27 职场文书
小学竞选班干部演讲稿
2014/08/20 职场文书
教师四风问题整改措施
2014/09/25 职场文书
万里长城导游词
2015/01/30 职场文书
2015迎新晚会开场白
2015/05/29 职场文书
张思德观后感
2015/06/09 职场文书
Win11无法安装更新补丁KB3045316怎么办 附KB3045316补丁修复教程
2022/08/14 数码科技