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的Django框架中的模版继承
Jul 16 Python
python 网络编程详解及简单实例
Apr 25 Python
python中 logging的使用详解
Oct 25 Python
django admin 后台实现三级联动的示例代码
Jun 22 Python
python RabbitMQ 使用详细介绍(小结)
Nov 08 Python
基于Python2、Python3中reload()的不同用法介绍
Aug 12 Python
python conda操作方法
Sep 11 Python
Python爬虫实现模拟点击动态页面
Mar 05 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
Apr 27 Python
python编写softmax函数、交叉熵函数实例
Jun 11 Python
Python图像处理二值化方法实例汇总
Jul 24 Python
如何用用Python将地址标记在地图上
Feb 07 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
phpwind中的数据库操作类
2007/01/02 PHP
PHP flock 文件锁详细介绍
2012/12/29 PHP
基于php验证码函数的使用示例
2013/05/03 PHP
php中数字0和空值的区别分析
2014/06/05 PHP
codeigniter中view通过循环显示数组数据的方法
2015/03/20 PHP
php接口实现拖拽排序功能
2018/04/23 PHP
利用JS重写Cognos右键菜单的实现代码
2010/04/11 Javascript
做好七件事帮你提升jQuery的性能
2014/02/06 Javascript
javascript中style.left和offsetLeft的用法说明
2014/03/07 Javascript
理解javascript中try...catch...finally
2015/12/25 Javascript
Nodejs如何复制文件
2016/03/09 NodeJs
jQuery利用sort对DOM元素进行排序操作
2016/11/07 Javascript
微信小程序获取微信运动步数的实例代码
2017/07/20 Javascript
React Native使用百度Echarts显示图表的示例代码
2017/11/07 Javascript
Vue2.0 事件的广播与接收(观察者模式)
2018/03/14 Javascript
Node.js设置定时任务之node-schedule模块的使用详解
2020/04/28 Javascript
javascript实现的图片预览和上传功能示例【兼容IE 9】
2020/05/01 Javascript
Django开发中的日志输出的方法
2018/07/02 Python
对python添加模块路径的三种方法总结
2018/10/16 Python
python利用ffmpeg进行录制屏幕的方法
2019/01/10 Python
说说如何遍历Python列表的方法示例
2019/02/11 Python
python操作小程序云数据库实现简单的增删改查功能
2019/06/06 Python
Django框架创建mysql连接与使用示例
2019/07/29 Python
django迁移文件migrations的实现
2020/03/31 Python
Python视频编辑库MoviePy的使用
2020/04/01 Python
详解Python GUI编程之PyQt5入门到实战
2020/12/10 Python
DJI大疆德国官方商城:大疆无人机
2018/09/01 全球购物
美国亚洲时尚和美容产品的一站式网上商店:Stylevana
2019/09/05 全球购物
《燕子》教学反思
2014/02/18 职场文书
高考寄语大全
2014/04/08 职场文书
大学生活动总结怎么写
2014/04/29 职场文书
班训口号大全
2014/06/18 职场文书
地理信息科学专业推荐信
2014/09/08 职场文书
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
2014年办公室文秘工作总结
2014/12/09 职场文书
十大最强火系宝可梦,喷火龙上榜,第一名有双火属性
2022/03/18 日漫