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的pandas框架操作Excel文件中的数据教程
Mar 31 Python
Python获取运行目录与当前脚本目录的方法
Jun 01 Python
python数据预处理之将类别数据转换为数值的方法
Jul 05 Python
分分钟入门python语言
Mar 20 Python
tensorflow学习笔记之mnist的卷积神经网络实例
Apr 15 Python
Python设计模式之职责链模式原理与用法实例分析
Jan 11 Python
用Python解决x的n次方问题
Feb 08 Python
python3读取csv文件任意行列代码实例
Jan 13 Python
Python imutils 填充图片周边为黑色的实现
Jan 19 Python
在python image 中实现安装中文字体
May 16 Python
Python pymysql模块安装并操作过程解析
Oct 13 Python
Pytorch中Softmax和LogSoftmax的使用详解
Jun 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
phpmailer绑定邮箱的实现方法
2016/12/01 PHP
JS获取计算机mac地址以及IP的实现方法
2014/01/08 Javascript
jQuery实现动画效果的简单实例
2014/01/27 Javascript
Node.js中创建和管理外部进程详解
2014/08/16 Javascript
node.js中使用socket.io制作命名空间
2014/12/15 Javascript
jquery仿QQ登录账号选择下拉框效果
2016/03/22 Javascript
jQuery常用的一些技巧汇总
2016/03/26 Javascript
javascript常用经典算法详解
2017/01/11 Javascript
JavaScript中for循环的几种写法与效率总结
2017/02/03 Javascript
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)
2018/11/05 Javascript
JS学习笔记之原型链和利用原型实现继承详解
2019/05/29 Javascript
vue 中固定导航栏的实例代码
2019/11/01 Javascript
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
python控制台显示时钟的示例
2014/02/24 Python
Python选课系统开发程序
2016/09/02 Python
使用requests库制作Python爬虫
2018/03/25 Python
python八皇后问题的解决方法
2018/09/27 Python
Python2和Python3的共存和切换使用
2019/04/12 Python
python实现从本地摄像头和网络摄像头截取图片功能
2019/07/11 Python
对Python函数设计规范详解
2019/07/19 Python
Python 70行代码实现简单算式计算器解析
2019/08/30 Python
Django设置Postgresql的操作
2020/05/14 Python
keras自动编码器实现系列之卷积自动编码器操作
2020/07/03 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
HTML5操作WebSQL数据库的实例代码
2017/08/26 HTML / CSS
HTML5中的Web Notification桌面通知功能的实现方法
2019/07/29 HTML / CSS
Nike荷兰官方网站:Nike.com (NL)
2018/04/19 全球购物
中青班党性分析材料
2014/02/16 职场文书
《美丽的小路》教学反思
2014/02/26 职场文书
外联部演讲稿
2014/05/24 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
文员岗位职责
2015/02/04 职场文书
小学语文继续教育研修日志
2015/11/13 职场文书
MySQL中使用or、in与union all在查询命令下的效率对比
2021/05/26 MySQL
详解Java实践之建造者模式
2021/06/18 Java/Android