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中的ceil()方法使用教程
May 14 Python
Python使用SocketServer模块编写基本服务器程序的教程
Jul 12 Python
python绘制多个曲线的折线图
Mar 23 Python
对python cv2批量灰度图片并保存的实例讲解
Nov 09 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
Nov 10 Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
Dec 05 Python
Python模块的加载讲解
Jan 15 Python
Python字符串对象实现原理详解
Jul 01 Python
详解Python打包分发工具setuptools
Aug 05 Python
tensorflow之变量初始化(tf.Variable)使用详解
Feb 06 Python
python判断一个变量是否已经设置的方法
Aug 13 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
Nov 05 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投票程序源码
2007/03/11 PHP
$_GET['goods_id']+0 的使用详解
2013/06/06 PHP
php抓取页面的几种方法详解
2013/06/17 PHP
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
跟我学Laravel之请求(Request)的生命周期
2014/10/15 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
php处理带有中文URL的方法
2016/07/11 PHP
PHP自定义函数实现数组比较功能示例
2017/10/19 PHP
Laravel框架模板加载,分配变量及简单路由功能示例
2018/06/11 PHP
JS连接SQL数据库与ACCESS数据库的方法实例
2013/11/21 Javascript
jquery 通过name快速取值示例
2014/01/24 Javascript
iframe实用操作锦集
2014/04/22 Javascript
js实现模拟计算器退格键删除文字效果的方法
2015/05/07 Javascript
Angularjs注入拦截器实现Loading效果
2015/12/28 Javascript
js闭包引起的事件注册问题介绍
2016/03/29 Javascript
JS使用单链表统计英语单词出现次数
2016/06/16 Javascript
js 创建对象 经典模式全面了解
2016/08/16 Javascript
深入理解jQuery3.0的domManip函数
2016/09/01 Javascript
Json按某个键的值进行排序
2016/12/22 Javascript
js 事件的传播机制(实例讲解)
2017/07/20 Javascript
Vue.js弹出模态框组件开发的示例代码
2017/07/26 Javascript
Vue.js框架路由使用方法实例详解
2017/08/25 Javascript
js前端导出Excel的方法
2017/11/01 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
2019/11/07 Javascript
Websocket 向指定用户发消息的方法
2020/01/09 Javascript
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
Python定时器线程池原理详解
2020/02/26 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
2020/12/16 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
印度第一网上礼品店:IGP.com
2020/02/06 全球购物
手术室护士个人总结
2015/02/13 职场文书
酒店员工管理制度
2015/08/05 职场文书
美德少年事迹材料(2016推荐版)
2016/02/25 职场文书
投资入股协议书
2016/03/22 职场文书
Sleuth+logback 设置traceid 及自定义信息方式
2021/07/26 Java/Android