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内置函数bin() oct()等实现进制转换
Dec 30 Python
使用Python的turtle模块画图的方法
Nov 15 Python
python实现文本界面网络聊天室
Dec 12 Python
python输出电脑上所有的串口名的方法
Jul 02 Python
python绘制多个子图的实例
Jul 07 Python
pytorch 可视化feature map的示例代码
Aug 20 Python
python元组的概念知识点
Nov 19 Python
python爬虫之遍历单个域名
Nov 20 Python
基于h5py的使用及数据封装代码
Dec 26 Python
python matplotlib中的subplot函数使用详解
Jan 19 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
Jan 21 Python
Python实现动态给类和对象添加属性和方法操作示例
Feb 29 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
PHP编程与应用
2006/10/09 PHP
php+mysql 实现身份验证代码
2010/03/24 PHP
PHP学习笔记之字符串编码的转换和判断
2014/05/22 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
2014/06/09 PHP
php传值赋值和传地址赋值用法实例分析
2015/06/20 PHP
php需登录的文件上传管理系统
2020/03/21 PHP
详解PHP+AJAX无刷新分页实现方法
2015/11/03 PHP
win平台安装配置Nginx+php+mysql 环境
2016/01/12 PHP
php实现连接access数据库并转txt写入的方法
2017/02/08 PHP
利用Laravel生成Gravatar头像地址的优雅方法
2017/12/30 PHP
Node.js中的模块机制学习笔记
2014/11/04 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
2015/02/28 Javascript
AngularJS入门教程之AngularJS 模板
2016/08/18 Javascript
JSON与String互转的实现方法(Javascript)
2016/09/27 Javascript
jQuery实现背景滑动菜单
2016/12/02 Javascript
jQuery实现下拉菜单的实例代码
2017/06/19 jQuery
在vue项目中引入highcharts图表的方法(详解)
2018/03/05 Javascript
使用Vue构建可重用的分页组件
2018/03/26 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
2019/01/20 Javascript
vue-resource:jsonp请求百度搜索的接口示例
2019/11/09 Javascript
vue实现商品列表的添加删除实例讲解
2020/05/14 Javascript
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
在Python中用has_key()方法查找键是否存在的教程
2015/05/21 Python
深入flask之异步非堵塞实现代码示例
2018/07/31 Python
Django集成celery发送异步邮件实例
2019/12/17 Python
英国电子产品购物网站:Tech in the basket
2019/11/08 全球购物
毕业生多媒体设计求职信
2013/10/12 职场文书
前台接待的工作职责
2013/11/21 职场文书
简历中的自我评价怎么写
2014/01/29 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
刑事法律意见书
2015/06/04 职场文书
职工的安全责任书范文!
2019/07/02 职场文书
pycharm2021激活码使用教程(永久激活亲测可用)
2021/03/30 Python
php中pcntl_fork详解
2021/04/01 PHP
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python
JS前端监控采集用户行为的N种姿势
2022/07/23 Javascript