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 (2)
Oct 31 Python
Python操作Access数据库基本步骤分析
Sep 19 Python
Python_LDA实现方法详解
Oct 25 Python
点球小游戏python脚本
May 22 Python
Python2和Python3中urllib库中urlencode的使用注意事项
Nov 26 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
Jan 30 Python
Python字符串对象实现原理详解
Jul 01 Python
解决Python正则表达式匹配反斜杠''\''问题
Jul 17 Python
Python多线程及其基本使用方法实例分析
Oct 29 Python
Django与pyecharts结合的实例代码
May 13 Python
Python Django路径配置实现过程解析
Nov 05 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
Syphon 秘笈
2021/03/03 冲泡冲煮
php数组保存文本与文本反编成数组实例
2014/11/13 PHP
在Windows上安装Node.js模块的方法
2011/09/25 Javascript
JavaScript模块随意拖动示例代码
2014/05/27 Javascript
使用jquery操作session方法分享
2015/01/22 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
javascript+canvas实现刮刮卡抽奖效果
2015/07/29 Javascript
js中scrollTop()方法和scroll()方法用法示例
2016/10/03 Javascript
BootStrap中
2016/12/10 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
2017/01/09 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
jQuery NProgress.js加载进度插件的简单使用方法
2018/01/31 jQuery
浅谈实现vue2.0响应式的基本思路
2018/02/13 Javascript
js计算两个日期间的天数月的实例代码
2018/09/20 Javascript
vue组件开发之slider组件使用详解
2020/08/21 Javascript
[03:12]2016完美“圣”典风云人物:单车专访
2016/12/02 DOTA
PHP webshell检查工具 python实现代码
2009/09/15 Python
python定时采集摄像头图像上传ftp服务器功能实现
2013/12/23 Python
用Python抢过年的火车票附源码
2015/12/07 Python
shelve  用来持久化任意的Python对象实例代码
2016/10/12 Python
redis之django-redis的简单缓存使用
2018/06/07 Python
Python Grid使用和布局详解
2018/06/30 Python
python实现月食效果实例代码
2019/06/18 Python
Django 过滤器汇总及自定义过滤器使用详解
2019/07/19 Python
一个入门级python爬虫教程详解
2021/01/27 Python
沪江旗下的海量优质课程平台:沪江网校
2017/11/07 全球购物
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
学院领导推荐信
2013/10/30 职场文书
清明节网上祭英烈活动总结
2014/04/30 职场文书
我的中国梦演讲稿小学篇
2014/08/19 职场文书
大学运动会加油稿200字(5篇)
2014/09/27 职场文书
2014最新实习证明模板
2014/10/02 职场文书
工程安全生产协议书
2014/11/21 职场文书
大学生旷课检讨书1000字
2015/02/19 职场文书
2016国培学习心得体会
2016/01/08 职场文书
SQL Server2019数据库备份与还原脚本,数据库可批量备份
2021/11/20 SQL Server