类的私有属性:

__private_attrs:两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。
在类内部的方法中使用时  self.__private_attrs。

类的方法:

在类地内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数

类的私有方法 :

__private_method:两个下划线开头,声明该方法为私有方法,不能在类地外部调用。
在类的内部调用 self.__private_methods

默认情况下,Python中的成员函数和成员变量都是公开的(public),在python中没有类似public,private等关键词来修饰成员函数和成员变量。
在python中定义私有变量只需要在变量名或函数名前加上 ”__“两个下划线,那么这个函数或变量就是私有的了。
在内部,python使用一种 name mangling 技术,将 __membername替换成 _classname__membername,也就是说,类的内部定义中,
所有以双下划线开始的名字都被"翻译"成前面加上单下划线和类名的形式。

例如:为了保证不能在class之外访问私有变量,Python会在类的内部自动的把我们定义的__spam私有变量的名字替换成为
_classname__spam(注意,classname前面是一个下划线,spam前是两个下划线),因此,用户在外部访问__spam的时候就会
提示找不到相应的变量。   python中的私有变量和私有方法仍然是可以访问的;访问方法如下:

私有变量:实例._类名__变量名
私有方法:实例._类名__方法名()

class people():__place = "nanjing"_age1 = 20def __init__(self, name):self.name = namedef __sayhello(self):print("%s say hello" % self.name)class teacher(people):passt1 = teacher("cmz")
print(t1._people__place)  # 访问私有变量
t1._people__sayhello()    # 访问私有方法

结果是
nanjing
cmz say hello

python私有属性和方法案例

其实,Python并没有真正的私有化支持,但可用下划线得到伪私有。   尽量避免定义以下划线开头的变量!

(1)_xxx      "单下划线" 开始的成员变量叫做保护变量,意思是只有类实例和子类实例能访问到这些变量,需通过类提供的接口进行访问;不能用'from module import *'导入
(2)__xxx    类中的私有变量/方法名 (Python的函数也是对象,所以成员方法称为成员变量也行得通。),
              " 双下划线 " 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。
(3)__xxx__ 系统定义名字,前后均有一个“双下划线” 代表python里特殊方法专用的标识,如 __init__()代表类的构造函数。

class people():__place = "nanjing"_age = 20def __init__(self, name):self.name = namedef _test(self):print("from people test")def __sayhello(self):print("%s say hello" % self.name)class teacher(people):passt1 = teacher("cmz")
print(t1._age)
print(people._age)
t1._test()
people._test(t1) # 传入对象t1

结果是
20
20
from people test
from people test

单下划线

class people():__place = "nanjing"_age = 20def __init__(self, name):self.name = namedef __sayhello(self):print("%s say hello" % self.name)class teacher(people):passt1 = teacher("cmz")
print(t1._people__place)
t1._people__sayhello()结果是
nanjing
cmz say hello

双下划线

转载于:https://www.cnblogs.com/caimengzhi/p/8522002.html

知识点 - python 类的私有/保护 属性和方法相关推荐

  1. python public_【速记速学】Python类的定义,属性,方法,访问性

    前言: Python 随着人工智能,机器学习,深度学习,AI 的发展,迅速成为宠儿. 今天,花 5 分钟时间,解读下Python中的类,定义,使用等. 如何定义自己的类呢? 01 类(对象) clas ...

  2. Python OOP:继承、单继承、多继承、__mro__、子类重写父类同名属性和方法、子类调用父类同名属性和方法、多层继承、super()、私有(实例)属性和方法、获取修改私有属性值、私有类属性

    一.继承 Python⾯向对象的继承指的是多个类之间的所属关系,即⼦类默认继承⽗类的所有属性和⽅法. 继承作用:继承可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展. 在P ...

  3. python 判断类是否存在某个属性或方法

    python 判断类是否存在某个属性或方法 #!/usr/bin/env python # -*- coding:utf-8 -*- #@Time : 2020/5/3 0003 12:47 #@Au ...

  4. python中如何对一个属性或方法进行封装_python学习第20天

    一.面向对象oop - 封装 1.类中封装: 成员属性和成员方法 2.封装等级 公有:公有成员既能够在类外调用,也可以在类调用 私有:私有成员不能够在类外调用,可以在类内调用 (前面加上双下划线表示) ...

  5. 高阶Day1:面向对象,面向过程,类和对象的属性和方法创建

    高阶Day1:面向对象,面向过程,类和对象的属性和方法创建 高级编程学习4个内容: 面向对象 MySQL数据库 网络编程 并发编程 面向过程(POP)与面向对象(OOP): 类和对象: 类名的定义: ...

  6. 面向对象(类的概念,属性,方法,属性的声明,面向对象编程思维

    1 面向对象 1.1 你是如何认识新事物的? 从过往的事物中总结事物的特点(特征),并比对新事物,把新事物进行归类. 1.2 类(Class)的概念(A) 类是对一组具有相同特征和行为的对象的抽象描述 ...

  7. drf之day05: 2个视图基类,GenericAPIView的属性和方法,基于APIView写5个接口,基于GenericAPIView写5个接口,5个视图扩展类,9个视图子类,视图集

    目录标题 一:2个视图基类 1.GenericAPIView的属性和方法 二:基于APIView写5个接口 三:基于GenericAPIView写5个接口 四:五个视图扩展类 1..基于Generic ...

  8. Python使用property函数定义属性访问方法如果不定义fget会怎么样?

    我们知道Python使用property函数定义属性访问方法时的语法如下: 实例属性=property(fget=None, fset=None, fdel=None, doc=None) 而是要@p ...

  9. python类的私有属性_Python类的私有属性

    在 C++ 和 Java 中,属性(成员)有访问控制,如 public 表示任意代码可以访问该属性,private 表示仅当前类的代码才可以访问该属性. Python 中没有这个访问控制符,但是可以在 ...

最新文章

  1. GCC 在 Linux、Windows 系统安装
  2. asp.net利用RAR实现文件压缩解压缩【月儿原创】
  3. Android_View_得到Activity
  4. mixed content 混合内容
  5. 收藏一些效果炫酷的可视化网站
  6. 简单的面试题简解思路(搜集)
  7. BBQ Hard dp + 组合数学 + 建模
  8. 面向对象程序设计-C++ Default constructor Copy constructor Destructor Operator Overloading【第九次上课笔记】...
  9. away3d创建基础view世界(基础 一)
  10. [html] 写一个布局,当页面滚动一定高时,导航始终固定在顶部,反之恢复原位
  11. QT中使用全局变量在多个源程序中传递变量
  12. 制作透明的图标ICO
  13. java netty rpc框架_Java编写基于netty的RPC框架
  14. 微信小程序密码显示隐藏(小眼睛)
  15. php大马2022亲测可用,绕过waf无加密版本
  16. 教你用Python写连连看外挂(滑稽)
  17. 下载和安装MySQL(傻瓜)教程
  18. 最全Python绘制饼形图(饼状图)
  19. 通过usb利用adb实现android手机和pc机通信
  20. 阿里蚂蚁金服4面面经(已拿Offer)附答案!突如其来的意外之喜

热门文章

  1. android弹幕开发,android弹幕框架
  2. 上网课的心得体会1000字_【家庭教育】家庭教育心得体会 ——济南市罗而小学家庭教育“好家风好家教”专栏(十一)...
  3. c++ list box 字体设置_上海印刷字体展示馆 迎来第一批团队参观
  4. 为什么整数在python中表示d_python 数据类型和变量
  5. 怎么用cmd关闭系统弹窗_SD卡受损怎么修复?教你一招三步搞定
  6. 雷达多普勒频率计算公式_手持式雷达流速仪的监测应用方案
  7. 计算机学院张旭豪,饿了么收购百度外卖,可以看出张旭豪硕士研究生是有多厉害!...
  8. 美国研发出第一台计算机的时间,研发世界第一台电脑的核心人物,被美国隐藏35年,只因他是个华人...
  9. k8s 查看mysql 日志_k8s 使用 Init Container 确保依赖的服务已经启动
  10. 话筒增益_话筒啸叫怎么办?教你四个解决话筒啸叫的方法!