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中的函数用法入门教程
Sep 02 Python
Python爬虫小技巧之伪造随机的User-Agent
Sep 13 Python
Python数据可视化之画图
Jan 15 Python
解决Python中定时任务线程无法自动退出的问题
Feb 18 Python
Python实现平行坐标图的两种方法小结
Jul 04 Python
Python远程开发环境部署与调试过程图解
Dec 09 Python
python3 实现调用串口功能
Dec 26 Python
pandas分组聚合详解
Apr 10 Python
Python基于Tkinter编写crc校验工具
May 06 Python
Python轻量级web框架bottle使用方法解析
Jun 13 Python
python进度条显示-tqmd模块的实现示例
Aug 23 Python
Django自带用户认证系统使用方法解析
Nov 12 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
10条PHP编程习惯助你找工作
2008/09/29 PHP
基于PHP常用字符串的总结(待续)
2013/06/07 PHP
PHP之uniqid()函数用法
2014/11/03 PHP
PHP中定义数组常量(array常量)的方法
2014/11/17 PHP
php和editplus正则表达式去除空白行
2015/04/17 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
php判断是否连接上网络的方法实例详解
2016/12/14 PHP
JavaScript中的私有成员
2006/09/18 Javascript
菜鸟javascript基础整理1
2010/12/06 Javascript
善用事件代理,警惕闭包的性能陷阱。
2011/01/20 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
2012/11/08 Javascript
jquery如何改变html标签的样式(两种实现方法)
2013/01/16 Javascript
jQuery实现用户注册的表单验证示例
2013/08/28 Javascript
jquery实现多屏多图焦点图切换特效的方法
2015/05/04 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
2016/02/18 Javascript
聊聊JavaScript如何实现继承及特点
2017/04/07 Javascript
js拖动滑块和点击水波纹效果实例代码
2018/10/16 Javascript
JavaScript中.min.js和.js文件的区别讲解
2019/02/13 Javascript
vue前后分离调起微信支付
2019/07/29 Javascript
搭建vscode+vue环境的详细教程
2020/08/31 Javascript
[44:30]完美世界DOTA2联赛PWL S2 GXR vs Magma 第一场 11.25
2020/11/26 DOTA
简单谈谈python中的Queue与多进程
2016/08/25 Python
python2.7 mayavi 安装图文教程(推荐)
2017/06/22 Python
Python网络编程 Python套接字编程
2017/09/13 Python
使用Python处理Excel表格的简单方法
2018/06/07 Python
如何基于python测量代码运行时间
2019/12/25 Python
python dataframe NaN处理方式
2019/12/26 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
2020/02/20 Python
python和php哪个更适合写爬虫
2020/06/22 Python
CSS超出文本指定宽度用省略号代替和文本不换行
2016/05/05 HTML / CSS
Flesh Beauty官网:露华浓集团旗下彩妆品牌
2021/02/15 全球购物
介绍下java.util.Arrays类
2012/10/16 面试题
大学运动会入场词
2014/02/22 职场文书
党代会心得体会
2014/09/04 职场文书
初中生毕业评语
2014/12/29 职场文书
Springboot如何使用logback实现多环境配置?
2021/06/16 Java/Android