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生成器实现微线程编程的教程
Apr 13 Python
在Python中定义和使用抽象类的方法
Jun 30 Python
利用matplotlib+numpy绘制多种绘图的方法实例
May 03 Python
Python实现的朴素贝叶斯分类器示例
Jan 06 Python
Pandas中resample方法详解
Jul 02 Python
详解python中的生成器、迭代器、闭包、装饰器
Aug 22 Python
Pytorch实现基于CharRNN的文本分类与生成示例
Jan 08 Python
Python实现链表反转的方法分析【迭代法与递归法】
Feb 22 Python
python 制作本地应用搜索工具
Feb 27 Python
基于注解实现 SpringBoot 接口防刷的方法
Mar 02 Python
十个Python自动化常用操作,即拿即用
May 10 Python
python中__slots__节约内存的具体做法
Jul 04 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
使用 eAccelerator加速PHP代码的目的
2007/03/16 PHP
PHP获取网卡地址的代码
2008/04/09 PHP
php htmlentities和htmlspecialchars 的区别
2008/08/18 PHP
php empty() 检查一个变量是否为空
2011/11/10 PHP
解析php中static,const与define的使用区别
2013/06/18 PHP
PHP rsa加密解密算法原理解析
2020/12/09 PHP
jQuery(js)获取文字宽度(显示长度)示例代码
2013/12/31 Javascript
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
2014/09/21 Javascript
js简单实现Select互换数据的方法
2015/08/17 Javascript
JavaScript获取对象在页面中位置坐标的方法
2016/02/03 Javascript
Javascript生成带参数的二维码示例
2016/10/10 Javascript
如何使用Bootstrap 按钮实例详解
2017/03/29 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
Javascript中prototype与__proto__的关系详解
2018/03/11 Javascript
react在安卓中输入框被手机键盘遮挡问题的解决方法
2018/09/03 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
2019/07/12 Javascript
详解Vue中的watch和computed
2020/11/09 Javascript
[01:13]DOTA2群星解读国服召集令 一起说出回归的理由
2013/07/17 DOTA
python 去除txt文本中的空格、数字、特定字母等方法
2018/07/24 Python
python3 实现调用串口功能
2019/12/26 Python
Python3 集合set入门基础
2020/02/10 Python
详解python 条件语句和while循环的实例代码
2020/12/28 Python
美国最大的香水连锁店官网:Perfumania
2016/08/15 全球购物
美国知名的时尚购物网站:Anthropologie
2016/12/22 全球购物
C/C++有关内存的思考题
2015/12/04 面试题
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
保洁主管岗位职责
2013/11/20 职场文书
英语简历自我评价
2014/01/26 职场文书
适用于所有创业者的创业计划书
2014/02/05 职场文书
共筑中国梦演讲稿
2014/04/23 职场文书
房屋出租委托书格式
2014/09/23 职场文书
2015小学音乐教师个人工作总结
2015/07/21 职场文书
四年级作文之说明文作文
2019/10/14 职场文书
springboot拦截器无法注入redisTemplate的解决方法
2021/06/27 Java/Android
Win11 Build 22000.829更新补丁KB5015882发布(附更新修复内容汇总)
2022/07/15 数码科技