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解析json实例方法
Nov 19 Python
Python程序员鲜为人知但你应该知道的17个问题
Jun 04 Python
从零开始学Python第八周:详解网络编程基础(socket)
Dec 14 Python
Python 获取当前所在目录的方法详解
Aug 02 Python
Python实现爬取需要登录的网站完整示例
Aug 19 Python
Python实现图片尺寸缩放脚本
Mar 10 Python
Selenium的使用详解
Oct 19 Python
python滑块验证码的破解实现
Nov 10 Python
pytorch 实现tensor与numpy数组转换
Dec 27 Python
Python for循环通过序列索引迭代过程解析
Feb 07 Python
matplotlib quiver箭图绘制案例
Apr 17 Python
appium+python自动化配置(adk、jdk、node.js)
Nov 17 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实现的百度搜索某地天气的小偷代码
2014/04/23 PHP
php字符串的替换,分割和连接方法
2016/05/23 PHP
Yii调试查看执行SQL语句的方法
2016/07/15 PHP
Javascript技术技巧大全(五)
2007/01/22 Javascript
Add a Picture to a Microsoft Word Document
2007/06/15 Javascript
拖拉表格的JS函数
2008/11/20 Javascript
JavaScript 滚轮事件使用说明
2010/03/07 Javascript
JavaScript OOP面向对象介绍
2010/12/02 Javascript
JavaScript中valueOf函数与toString方法深入理解
2012/12/02 Javascript
Winform客户端向web地址传参接收参数的方法
2016/05/17 Javascript
实例解析jQuery中proxy()函数的用法
2016/05/24 Javascript
Angular实现下载安装包的功能代码分享
2017/09/05 Javascript
基于对象合并功能的实现示例
2017/10/10 Javascript
Thinkjs3新手入门之添加一个新的页面
2017/12/06 Javascript
解决使用Vue.js显示数据的时,页面闪现原始代码的问题
2018/02/11 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
初学Python函数的笔记整理
2015/04/07 Python
使用Python编写基于DHT协议的BT资源爬虫
2016/03/19 Python
浅谈Python中chr、unichr、ord字符函数之间的对比
2016/06/16 Python
对PyQt5中树结构的实现方法详解
2019/06/17 Python
Tensorflow限制CPU个数实例
2020/02/06 Python
python中format函数如何使用
2020/06/22 Python
实例教程 纯CSS3打造非常炫的加载动画效果
2014/11/05 HTML / CSS
纯css3实现的竖形无限级导航
2014/12/10 HTML / CSS
Html5适配iphoneX刘海屏的简单实现
2019/04/09 HTML / CSS
宝拉珍选澳大利亚官方购物网站:Paula’s Choice澳大利亚
2016/09/13 全球购物
英国高级健康和美容产品零售商:Life and Looks
2019/08/01 全球购物
加拿大领先家居家具网上购物:Aosom.ca
2020/05/27 全球购物
行政总监岗位职责
2013/12/05 职场文书
幼儿园大班开学寄语
2014/08/02 职场文书
搞笑老公保证书
2015/02/26 职场文书
居住证明范文
2015/06/17 职场文书
golang 实现两个结构体复制字段
2021/04/28 Golang
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript
教你怎么用PyCharm为同一服务器配置多个python解释器
2021/05/31 Python
MySQL磁盘碎片整理实例演示
2022/04/03 MySQL