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编程中time模块的使用
Nov 20 Python
python一键升级所有pip package的方法
Jan 16 Python
Python中实现switch功能实例解析
Jan 11 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
May 16 Python
Python中的函数式编程:不可变的数据结构
Oct 08 Python
python保存二维数组到txt文件中的方法
Nov 15 Python
python实现对任意大小图片均匀切割的示例
Dec 05 Python
python tkinter实现界面切换的示例代码
Jun 14 Python
如何安装并使用conda指令管理python环境
Jul 10 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
Dec 11 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
Jul 28 Python
django中cookiecutter的使用教程
Dec 03 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中jQuery插件autocomplate的简单使用笔记
2012/06/14 PHP
php实现插入数组但不影响原有顺序的方法
2015/03/27 PHP
PHP微信支付实例解析
2016/07/22 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
2016/10/10 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
2016/12/15 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
向当前style sheet中插入一个新的style实现方法
2013/04/01 Javascript
分析Node.js connect ECONNREFUSED错误
2013/04/09 Javascript
Js与Jq 获取页面元素值的方法和差异对比
2015/04/30 Javascript
js中window.open的参数及注意注意事项
2016/07/06 Javascript
JS常用算法实现代码
2016/11/14 Javascript
微信小程序中的onLoad详解及简单实例
2017/04/05 Javascript
关于javascript获取内联样式与嵌入式样式的实例
2017/06/01 Javascript
基于jquery实现多级菜单效果
2017/07/25 jQuery
vue接通后端api以及部署到服务器操作
2020/08/13 Javascript
vue使用require.context实现动态注册路由
2020/12/25 Vue.js
Python去除列表中重复元素的方法
2015/03/20 Python
[原创]pip和pygal的安装实例教程
2017/12/07 Python
Python操作Oracle数据库的简单方法和封装类实例
2018/05/07 Python
Python实现快速计算词频功能示例
2018/06/25 Python
python使用tcp实现局域网内文件传输
2020/03/20 Python
selenium在执行phantomjs的API并获取执行结果的方法
2018/12/17 Python
利用Python实现微信找房机器人实例教程
2019/03/10 Python
基于python实现百度翻译功能
2019/05/09 Python
使用Django搭建一个基金模拟交易系统教程
2019/11/18 Python
python如何利用paramiko执行服务器命令
2020/11/07 Python
Timex手表官网:美国运动休闲手表品牌
2017/01/28 全球购物
Java面试题汇总
2015/12/06 面试题
考试退步检讨书
2014/01/15 职场文书
《小松树和大松树》教学反思
2014/02/20 职场文书
老干部工作先进集体事迹材料
2014/05/21 职场文书
伦敦奥运会口号
2014/06/13 职场文书
和谐社区口号
2014/06/19 职场文书
2015年音乐教师个人工作总结
2015/05/20 职场文书
办公用品管理制度
2015/08/04 职场文书
基于PyQt5制作一个群发邮件工具
2022/04/08 Python