Python面向对象程序设计之私有属性及私有方法示例


Posted in Python onApril 08, 2019

本文实例讲述了Python面向对象程序设计之私有属性及私有方法。分享给大家供大家参考,具体如下:

如果有一个对象,当需要对其进行修改属性时,有2种方法:

(1)对象名.属性名=数据---->直接修改

(2)对象名.方法名()----->间接修改

为了更好的保障属性安全,不能随意修改,一般处理方式为:

(1)将属性定义为私有属性

(2)添加一个可以调用的方法,供调用,也就是间接调用属性

首先我讲解下私有属性的例子:

1.下面这个是一个错误的例子:

class People(object):
  def __init__(self,name):
    self.__name=name
  def getName(self):
    return self.__name
  def setName(self,newName):
    if len(newName) >= 5:
      self.__name = newName
    else:
      print("error:名字长度需要大于或者等于5")
xiaoming = People("monkey")
print(xiaoming.__name)

这是错误的,因为直接输出了私有的属性,是不可以的,解决方式为:或者删掉object也行

class People(object):
  def __init__(self,name):
    self.__name=name
  def getName(self):
    return self.__name
  def setName(self,newName):
    if len(newName) >= 5:
      self.__name = newName
    else:
      print("error:名字长度需要大于或者等于5")
xiaoming = People("monkey")
print(xiaoming.getName()) #这样就是通过调用方法来间接调用属性

下面讲解一个私有方法的例子:

class Dog:
  #私有方法,在方法名前面加上两个下划线
  def __test1(self):
    print("1")
  def test2(self):
    print("2")
dog=Dog()
dog.__test1() #报错
dog.test2()  #正确

私有方法是不能直接调用的

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中的jquery PyQuery库使用小结
May 13 Python
从零学python系列之新版本导入httplib模块报ImportError解决方案
May 23 Python
python字符串替换的2种方法
Nov 30 Python
python实现蒙特卡罗方法教程
Jan 28 Python
使用matplotlib中scatter方法画散点图
Mar 19 Python
彻底理解Python中的yield关键字
Apr 01 Python
解决Atom安装Hydrogen无法运行python3的问题
Aug 28 Python
python代码xml转txt实例
Mar 10 Python
关于Python 中的时间处理包datetime和arrow的方法详解
Mar 19 Python
使用Python项目生成所有依赖包的清单方式
Jul 13 Python
用python绘制樱花树
Oct 09 Python
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
May 27 Python
分析经典Python开发工程师面试题
Apr 08 #Python
django celery redis使用具体实践
Apr 08 #Python
python制作抖音代码舞
Apr 07 #Python
python实现抖音点赞功能
Apr 07 #Python
将pip源更换到国内镜像的详细步骤
Apr 07 #Python
python实现弹窗祝福效果
Apr 07 #Python
python实现祝福弹窗效果
Apr 07 #Python
You might like
ThinkPHP3.0略缩图不能保存到子目录的解决方法
2012/09/30 PHP
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
JQuery验证工具类搜集整理
2013/01/16 Javascript
javascript强大的日期函数代码分享
2013/09/04 Javascript
Javascript添加监听与删除监听用法详解
2014/12/19 Javascript
jQuery对象的length属性用法实例
2014/12/27 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
2015/03/02 Javascript
Jquery实现鼠标移动放大图片功能实例
2015/03/25 Javascript
基于javascript html5实现3D翻书特效
2016/03/14 Javascript
jQuery 常用代码集锦(必看篇)
2016/05/16 Javascript
详解Vue.js分发之作用域槽
2017/06/13 Javascript
JavaScript中in和hasOwnProperty区别详解
2017/08/04 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
深入理解 TypeScript Reflect Metadata
2019/12/12 Javascript
公众号SVG动画交互实战代码
2020/05/31 Javascript
vue 接口请求地址前缀本地开发和线上开发设置方式
2020/08/13 Javascript
Javascript表单序列化原理及实现代码详解
2020/10/30 Javascript
[01:14:35]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第一局
2016/02/26 DOTA
Python下Fabric的简单部署方法
2015/07/14 Python
Python调用SQLPlus来操作和解析Oracle数据库的方法
2016/04/09 Python
Python 实现两个列表里元素对应相乘的方法
2018/11/14 Python
Django 反向生成url实例详解
2019/07/30 Python
pandas-resample按时间聚合实例
2019/12/27 Python
pytorch实现建立自己的数据集(以mnist为例)
2020/01/18 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
Python3读写ini配置文件的示例
2020/11/06 Python
详解appium自动化测试工具(monitor、uiautomatorviewer)
2021/01/27 Python
研究生自荐信
2013/10/09 职场文书
执行力心得体会
2013/12/31 职场文书
关于期中考试的反思
2014/02/02 职场文书
毕业生自荐书
2014/02/03 职场文书
党员教师一句话承诺
2014/05/30 职场文书
幼儿园安全管理制度
2015/08/05 职场文书
pytorch中的 .view()函数的用法介绍
2022/03/17 Python
java.util.NoSuchElementException原因及两种解决方法
2022/06/28 Java/Android