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使用PyCrypto实现AES加密功能示例
May 22 Python
python3+PyQt5泛型委托详解
Apr 24 Python
Python定义二叉树及4种遍历方法实例详解
Jul 05 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
Oct 29 Python
python中for循环把字符串或者字典添加到列表的方法
Jul 20 Python
Django结合ajax进行页面实时更新的例子
Aug 12 Python
Python K最近邻从原理到实现的方法
Aug 15 Python
python函数参数(必须参数、可变参数、关键字参数)
Aug 16 Python
Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法
Mar 20 Python
python多线程实现同时执行两个while循环的操作
May 02 Python
python进行二次方程式计算的实例讲解
Dec 06 Python
numpy array找出符合条件的数并赋值的示例代码
Jun 01 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 获取客户端真实IP地址多种方法小结
2010/05/15 PHP
php中file_get_contents与curl性能比较分析
2014/11/08 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
2016/11/02 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
jQuery用unbind方法去掉hover事件及其他方法介绍
2013/03/18 Javascript
jQuery动画效果-slideUp slideDown上下滑动示例代码
2013/08/28 Javascript
jquery bind(click)传参让列表中每行绑定一个事件
2014/08/06 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
JavaScript对数组进行随机重排的方法
2015/07/22 Javascript
基于jQuery实现点击弹出层实例代码
2016/01/01 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
jQuery实现的placeholder效果完整实例
2016/08/02 Javascript
浅谈js数组和splice的用法
2016/12/04 Javascript
JS 对java返回的json格式的数据处理方法
2016/12/05 Javascript
Es6 写的文件import 起来解决方案详解
2016/12/13 Javascript
js实现不提示直接关闭网页窗口
2017/03/30 Javascript
JS全角与半角转化实例(分享)
2017/07/04 Javascript
jQuery实现使用sort方法对json数据排序的方法
2018/04/17 jQuery
layui的table单击行勾选checkbox功能方法
2018/08/14 Javascript
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
2019/02/21 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
js实现的订阅发布者模式简单示例
2020/03/14 Javascript
微信小程序实现弹幕墙(祝福墙)
2020/11/18 Javascript
python根据路径导入模块的方法
2014/09/30 Python
Django之无名分组和有名分组的实现
2019/04/16 Python
Python 多个图同时在不同窗口显示的实现方法
2019/07/07 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
2019/12/18 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
2020/10/15 Python
英国二手iPhone、音乐、电影和游戏商店:musicMagpie
2018/10/26 全球购物
干部竞争上岗演讲稿
2014/09/11 职场文书
公证委托书格式
2014/09/13 职场文书
政风行风整改报告
2014/11/06 职场文书
Python 如何实现文件自动去重
2021/06/02 Python
python ansible自动化运维工具执行流程
2021/06/24 Python