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 相关文章推荐
Django中模版的子目录与include标签的使用方法
Jul 16 Python
Python实现ssh批量登录并执行命令
Oct 25 Python
详解python调度框架APScheduler使用
Mar 28 Python
Python实现的径向基(RBF)神经网络示例
Feb 06 Python
python 阶乘累加和的实例
Feb 01 Python
python全栈要学什么 python全栈学习路线
Jun 28 Python
python opencv 简单阈值算法的实现
Aug 04 Python
python创建子类的方法分析
Nov 28 Python
Python异步编程之协程任务的调度操作实例分析
Feb 01 Python
python脚本监控logstash进程并邮件告警实例
Apr 28 Python
Python 如何操作 SQLite 数据库
Aug 17 Python
Python Selenium实现无可视化界面过程解析
Aug 25 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
Terran历史背景
2020/03/14 星际争霸
php在项目中寻找代码的坏味道(综艺命名)
2012/07/19 PHP
如何设置mysql允许外网访问
2013/06/04 PHP
解析CodeIgniter自定义配置文件
2013/06/18 PHP
PHP获取youku视频真实flv文件地址的方法
2014/12/23 PHP
PHP统计当前在线用户数实例讲解
2015/10/21 PHP
jquery多浏览器捕捉回车事件代码
2010/06/22 Javascript
javascript getElementsByClassName实现代码
2010/10/11 Javascript
js 跳出页面的frameset框架示例介绍
2013/12/23 Javascript
jQuery修改CSS伪元素属性的方法
2014/07/30 Javascript
jQuery源码解读之removeAttr()方法分析
2015/02/20 Javascript
js实现tab切换效果实例
2015/09/16 Javascript
网页从弹窗页面单选框传值至父页面代码分享
2015/09/29 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
2015/12/04 Javascript
用canvas 实现个图片三角化(LOW POLY)效果
2016/02/18 Javascript
jQuery ajaxSubmit 实现ajax提交表单局部刷新
2016/07/04 Javascript
如何理解jQuery中的ajaxSubmit方法
2017/03/13 Javascript
使用Vue完成一个简单的todolist的方法
2017/12/01 Javascript
React-Router如何进行页面权限管理的方法
2017/12/06 Javascript
基于Vue+elementUI实现动态表单的校验功能(根据条件动态切换校验格式)
2019/04/04 Javascript
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
2019/10/23 Javascript
茶余饭后聊聊Vue3.0响应式数据那些事儿
2019/10/30 Javascript
vue中destroyed方法的使用说明
2020/07/21 Javascript
PyQt5实现下载进度条效果
2018/04/19 Python
Flask框架Flask-Login用法分析
2018/07/23 Python
pycharm安装和首次使用教程
2018/08/27 Python
利用python循环创建多个文件的方法
2018/10/25 Python
HTML5自定义视频播放器源码
2020/01/06 HTML / CSS
澳大利亚排名第一的儿童在线玩具商店:Toy Galaxy
2018/10/06 全球购物
Saks Fifth Avenue澳洲/亚太地区:萨克斯第五大道精品百货店
2019/06/09 全球购物
幼儿园教学管理制度
2014/02/04 职场文书
手工社团活动方案
2014/02/17 职场文书
大专毕业生求职信
2014/07/05 职场文书
社区党建工作总结2015
2015/05/13 职场文书
基石观后感
2015/06/12 职场文书
好员工观后感
2015/06/17 职场文书