Python对于类的成员没有严格的访问控制限制,这与其他面向对象的编程语言是有所区别的。

关于私有方法其实和私有属性差不多,有如下要点:

  • 1、通常我们约定,两个下划线开头的方法是私有方法。
  • 2、类内部可以访问私有方法。
  • 3、类外部不能直接访问私有方法,也就是不同通过对象.方法名直接调用。
  • 4、类外部可以通过 _类名__私有方法名访问私有方法。

示例:

# 在函数名的前面添加两个下划线,此时该函数被称为私有函数
# 只能在当前类中被直接调用,不同通过对象.方法名调用
# 私有函数
class Student():
def __init__(self, name, age):
# 普通变量
self.name = name
# 私有变量
self.__age = age def tellMe(self):
print(f"大家好,我是{self.name}。是一个公共方法") # 在公共函数中调用私有方法,
# 调用格式:self.__私有的函数名称(参数列表)
self.__tellMeAll() # 定义一个私有方法
def __tellMeAll(self):
print(f"我{self.__age}岁,但我一般不告诉别人。是一个私有方法") # 在公共函数中调用私有方法,
# 调用格式:self.__私有的函数名称(参数列表) # 创建一个Student对象
stu = Student("美猴王", 18) # 调用公共方法
"""
输出结果:
大家好,我是美猴王。是一个公共方法
我18岁,但我一般不告诉别人。是一个私有方法 从结果中可以看到,公共方法可以直接通过对象.方法名直接调用。
私有方法可以再对象中被调用。
"""
stu.tellMe() # 通过对象.方法名直接调用私有方法
# 报错
# AttributeError: 'Student' object has no attribute '__tellMeAll'
# stu.__tellMeAll() # 通过对象.方法名直接调用私有方法
# 没有报错
# 输出:我18岁,但我一般不告诉别人。是一个私有方法
stu._Student__tellMeAll()

类中的成员私有优化原理总结:

  • Python默认的成员函数和成员变量都是公开的,而在Python中私有属性和私有方法是没有类似Java语言的publicprivate等关键词来修饰的。
  • 在Python中定义私有变量,只需要在变量名或函数名前加上 __两个下划线,那么这个函数或变量就Python中的私有成员了。
  • 这是在Python内部使用一种 name mangling 技术,将 __membername替换成 _classname__membername,所以你在类(对象)外部使用原来的私有成员的名字时,会提示找不到。

最新文章

  1. yii2分页的基本使用及其配置详解
  2. Markdown:让书写更美好
  3. 在Salesforce中创建Approval Process
  4. hibernate-criteria查询
  5. apscheduler 排程
  6. jvm学习
  7. spring三种实例化bean的方式
  8. zepto.js 源码解析
  9. Android -- 自定义View小Demo,关于Path类的使用(一)
  10. redis学习(4)redis安装部署
  11. android111 java中调用c代码
  12. 纯CSS打造可折叠树状菜单
  13. PagerSlidingTabStrip的使用
  14. 华为C8816电信版ROOT过程
  15. android脚步---数字时钟和模拟时钟
  16. VR全景,让VR不再是“空中楼阁“——智慧城市常诚
  17. django 实现登录时候输入密码错误5次锁定用户十分钟
  18. 01-python中字符串的常见操作
  19. jQuery使用(十四):extend()方法
  20. ubuntu16.04下g++安装及使用

热门文章

  1. kafka学习笔记(三)kafka的使用技巧
  2. 关于在Vue中使用WebScoket的随笔
  3. Redisson-关于使用订阅数问题
  4. 自旋锁-JUC系列
  5. 【解决了一个小问题】alert manager中的cluster.advertise-address参数是什么意思?
  6. visual studio进行机器学习与python编写
  7. Ajax_Post用法
  8. QMainWindow(一)
  9. 由浅入深,66条JavaScript面试知识点
  10. 测试开发实战[提测平台]19-Echarts图表在项目的应用