形似       功能
__xx 这是私有变量, 只有内部可以访问,外部不可以访问。但是也不是一定不可以访问,只要以 _类名__xx样式就可以访问 。但最好不要这样做,养成良好编程习惯
_x 这是实例变量,可以访问,但是不要轻易访问。按照约定俗成,当你看到这样的变量时,意思就是,“虽然我可以被访问,但请把我视为私有变量,不要随意访问”。

代码演示

class A:
def __init__(self):
self._name = 1
self.__age = 2 a = A()
print(a.__dict__) # {'_name': 1, '_A__age': 2}
print(a._name ) # 返回 1。说明一个下划线可以被访问,只是在a.中不会显示。
print(a.__age) # 语法报错
print(a._A__age) # 返回 2。说明私有变量在外部并不是完全不能被访问

结合上面代码,问:若使用 a.__gender = "男" 定义一个实例属性,这个实例属性是否私有变量?其他实例对象能否访问?

使用a.gender定义的实例属性属性不是私有变量,这种方式可以看做是为实例对象a增加了一个__gender属性,这个属性只有实例对象a有,其他实例对象没有,所以其他实例对象也访问不了。

class A:
def __init__(self):
self._name = 1
self.__age = 2 a = A()
print(a.__dict__) # {'_name': 1, '_A__age': 2}
a.__gender = "男"
print(a.__dict__) # {'_name': 1, '_A__age': 2, '__gender': '男'}
print(a.__gender) # 返回“男” b = A()
print(b.__dict__) # {'_name': 1, '_A__age': 2}
b.__gender # 语法报错

Python中类的变量,一个下划线与两个下划线的区别的更多相关文章

  1. Python 学习之中的一个:在Mac OS X下基于Sublime Text搭建开发平台包括numpy,scipy

    1 前言 Python有许多IDE能够用,官方自己也带了一个,Eclipse也能够. 但我在使用各种IDE之后,发现用Sublime Text是最好用的一个.因此.我都是用Sublime Text来编 ...

  2. python练习:实现一个整数数组里面两个数之和为183的所有整数对

    l1 = [183,0,1,2,-184,367] num = [] for i in range (0,len(l1)): for l in range (i+1,len(l1)): if l1[i ...

  3. Python基础部分:5、 python语法之变量与常量

    目录 python语法之变量与常量 一.什么是变量与常量 1.什么是变量 2.什么是常量 二.变量的基本使用 1.代码中如何记录事物状态 2.变量使用的语法结构与底层原理 3.变量名的命名规范 4.变 ...

  4. Python中类的声明,使用,属性,实例属性,计算属性及继承,重写

    Python中的类的定义以及使用: 类的定义: 定义类 在Python中,类的定义使用class关键字来实现 语法如下: class className: "类的注释" 类的实体 ...

  5. C++的全部目标就是最优化资源的利用,以人付出更多为代价。Python刚好是另一个极端(Bjarne就说,一个人至少应该掌握两种计算机语言)

    说 C++ 反人类,是如果把 C++ 看作人(程序员)和资源(电子系统)的桥梁,他的全部目标就是最优化资源的利用,以人付出更多为代价.Python刚好是另一个极端.做好两个一起学.Bjarne就说,一 ...

  6. Python 私有变量中两个下划线 _ _item 与 一个下划线的区别 _item

    python中没有常量的说法, 但是可以通过元组实现一个常量 在python的私有变量中, 存在两个下划线 _ _item 与一个下划线 _item 的区别 前面带两个下划线的私有变量: 只能在本类中 ...

  7. python中有两个下划线__的是内置方法,一个下划线_或者没有下划线的可能是属性,也可能是方法,也可能是类名

    python中有两个下划线__的是内置方法,一个下划线_或者没有下划线的可能是属性,也可能是方法,也可能是类名,如果在类中定义的就是类的私有成员. >>> dir(__builtin ...

  8. python中类的定义、实例化、封装以及私有变量/方法

    1.  定义类 python中定义一个类的格式如下: class MyClass(object): def __init__(self,data1,data2): self.__data1=data1 ...

  9. Python中类的特殊变量

    特殊变量 类似__xx,以双下划线开头的实例变量名,就变成了一个私有变量(private),只有内部可以访问,外部不能访问: 类似__xx__,以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变 ...

随机推荐

  1. spring的不同事务传播行为和用途。

    1.PROPAGATION_REQUIRED:如果当前没有事务,就创建一个事务,如果当前存在事务,就加入该事务,该设置是最常用的设置. 2.PROPAGATION_SUPPORTS:支持当前事务,如果 ...

  2. [BUUCTF]REVERSE——easyre

    easyre 附件 拿到附件,首先查壳儿,(不仅仅是查壳,也能看一下程序的大概情况,知道是几位的程序,用对应位数的ida打开)64位程序,没有壳 64位ida直接载入,shift+f12首先检索一下程 ...

  3. Sql Server、Oracle、MySQL 日期格式化函数处理

    目录 Sql Server Oracle MySql Sql Server CONVERT ( '取数长度' , '时间' , '类型') 查询对应时间: 2021-03-17T19:18:18.00 ...

  4. C语言程序与设计:统计素数并求和

    目录 C语言程序与设计:统计素数并求和 1.题目要求 2.分析 3.代码 C语言程序与设计:统计素数并求和 1.题目要求 输入两个正整数 m 和 n(1≤m≤n≤500),统计给定整数 m 和 n 区 ...

  5. 使用.NET 6开发TodoList应用(1)——系列背景

    前言 想到要写这样一个系列博客,初衷有两个:一是希望通过一个实践项目,将.NET 6 WebAPI开发的基础知识串联起来,帮助那些想要入门.NET 6服务端开发的朋友们快速上手,对使用.NET 6开发 ...

  6. Postman环境变量的使用

    前言 请注意,Postman新版有ui上的改动,本文使用的Postman 版本8.4.0 for Mac, ui有调整,但是功能无改变. Postman是一款接口调测的软件,服务端开发的同学肯定会对自 ...

  7. Spring支持的常用数据库传播属性和事务隔离级别

    一.事务的传播属性 1.propagation:用来设置事务的传播行为,一个方法运行在了一个开启了事务的方法中时,当前方法是使用原来的事务还是开启一个新的事务. (1)propagation.REQU ...

  8. Linux(Centos) 设置显示vim行号

    1.修改vimrc文件 vim /etc/vimrc 2.在最后添加 set nu 如下图片所示 然后wq! 保存退出

  9. SpringBoot 整合Spring Security框架

    引入maven依赖 <!-- 放入spring security依赖 --> <dependency> <groupId>org.springframework.b ...

  10. nim_duilib(12)之menu(2)

    introduction 更多控件用法,请参考 here 和 源码. 本文将介绍menu的选项注册回调 before starting 本文的代码基于上一篇 stage1 回到项目demo_xml, ...