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使用os模块的os.walk遍历文件夹示例
Jan 27 Python
Python命令启动Web服务器实例详解
Feb 23 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
May 07 Python
python模块smtplib学习
May 22 Python
详解python算法之冒泡排序
Mar 05 Python
在python 中split()使用多符号分割的例子
Jul 15 Python
python 标准差计算的实现(std)
Jul 29 Python
python web框架中实现原生分页
Sep 08 Python
Python常用模块os.path之文件及路径操作方法
Dec 03 Python
解决tensorflow/keras时出现数组维度不匹配问题
Jun 29 Python
用 Python 定义 Schema 并生成 Parquet 文件详情
Sep 25 Python
Python简易开发之制作计算器
Apr 28 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 str_replace的替换漏洞
2008/03/15 PHP
基于php split()函数的用法详解
2013/06/05 PHP
举例讲解PHP面对对象编程的多态
2015/08/12 PHP
PHP Callable强制指定回调类型的方法
2016/08/30 PHP
Thinkphp页面跳转设置跳转等待时间的操作
2019/10/16 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
2020/04/14 PHP
拖动一个HTML元素
2006/12/22 Javascript
Javascript 类、命名空间、代码组织代码
2011/07/31 Javascript
Node.js中的模块机制学习笔记
2014/11/04 Javascript
javascript中几个容易混淆的概念总结
2015/04/14 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
2015/06/14 Javascript
JavaScript中数组的22种方法必学(推荐)
2016/07/20 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
2016/12/14 Javascript
JS简单实现获取元素的封装操作示例
2017/04/07 Javascript
jquery ui sortable拖拽后保存位置
2017/04/27 jQuery
NodeJs入门教程之定时器和队列
2019/03/08 NodeJs
Vue+ElementUI项目使用webpack输出MPA的方法
2019/08/27 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
2020/02/07 Javascript
详解VUE中的插值( Interpolation)语法
2020/10/18 Javascript
在Vue中使用Select选择器拼接label的操作
2020/10/22 Javascript
如何利用vue实现波谱拟合详解
2020/11/05 Javascript
单链表反转python实现代码示例
2018/02/08 Python
pandas通过索引进行排序的示例
2018/11/16 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
2020/01/16 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
2020/01/25 Python
解决Python pip 自动更新升级失败的问题
2020/02/21 Python
python topk()函数求最大和最小值实例
2020/04/02 Python
美国豪华时尚女性精品店:Kirna Zabête
2018/01/11 全球购物
韩国现代百货官网:Hmall
2018/03/21 全球购物
2019史上最全Database工程师题库
2015/12/06 面试题
北大研究生linux应用求职信
2013/10/29 职场文书
ktv总经理岗位职责
2014/02/17 职场文书
高中学校对照检查材料
2014/08/31 职场文书
初中生活随笔
2015/08/15 职场文书
回门宴新娘答谢词
2015/09/29 职场文书