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连接远程ftp服务器并列出目录下文件的方法
Apr 01 Python
Python模拟登录验证码(代码简单)
Feb 06 Python
Python数据结构与算法之完全树与最小堆实例
Dec 13 Python
Python Django框架单元测试之文件上传测试示例
May 17 Python
python实现基于朴素贝叶斯的垃圾分类算法
Jul 09 Python
使用django的ORM框架按月统计近一年内的数据方法
Jul 18 Python
Django 对象关系映射(ORM)源码详解
Aug 06 Python
YUV转为jpg图像的实现
Dec 09 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
Feb 20 Python
python如何保存文本文件
Jun 07 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
Jun 11 Python
python实现web邮箱扫描的示例(附源码)
Mar 30 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
阿拉伯的咖啡与水烟
2021/03/03 咖啡文化
php 无限级分类,超级简单的无限级分类,支持输出树状图
2014/06/29 PHP
PHP大批量插入数据库的3种方法和速度对比
2014/07/08 PHP
php mongodb操作类 带几个简单的例子
2016/08/25 PHP
JQuery 获取和设置Select选项的代码
2010/02/07 Javascript
jquery获取div宽度的实现思路与代码
2013/01/13 Javascript
JQuery 操作/获取table具体代码
2013/06/13 Javascript
jQuery.fn和jQuery.prototype区别介绍
2013/10/05 Javascript
三种方式获取XMLHttpRequest对象
2014/04/21 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
2015/06/18 Javascript
Javascript获取数组中的最大值和最小值的方法汇总
2016/01/01 Javascript
Jquery为DIV添加click事件的简单实例
2016/06/02 Javascript
JavaScript接口的实现三种方式(推荐)
2016/06/14 Javascript
JS实现元素上下左右移动效果
2017/10/18 Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
2018/01/06 jQuery
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
2018/01/18 jQuery
详解vue-router 初始化时做了什么
2018/06/11 Javascript
解决LayUI表单获取不到data的问题
2018/08/20 Javascript
jdk1.8+vue elementui实现多级菜单功能
2020/09/24 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
[02:10]DOTA2 TI10勇士令状玩法及不朽Ⅰ展示:焕新世界,如你所期
2020/05/29 DOTA
python冒泡排序简单实现方法
2015/07/09 Python
Python实现单词翻译功能
2017/06/06 Python
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
python队列Queue的详解
2019/05/10 Python
python3.6 如何将list存入txt后再读出list的方法
2019/07/02 Python
Python爬取腾讯视频评论的思路详解
2019/12/19 Python
Tensorflow中的dropout的使用方法
2020/03/13 Python
解决Python spyder显示不全df列和行的问题
2020/04/20 Python
python中format函数如何使用
2020/06/22 Python
html5 Canvas实现图片旋转的示例
2018/01/15 HTML / CSS
通息工程毕业生自荐信
2013/10/16 职场文书
网吧消防安全制度
2014/01/28 职场文书
大二学生职业生涯规划书
2014/02/05 职场文书
新闻通讯稿模板
2015/07/22 职场文书
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL