Python变量访问权限控制详解


Posted in Python onJune 29, 2019

oop1.py文件代码

# user/bin/python
class Foo:
def bar(self):
print('ok')
def hello(self, name):
print("i am %s" % name)
foo = Foo()
foo.bar()
foo.hello('Fred Huang')
class Foo:
def __init__(self, name, age):
''' 初始化实例属性'''
self._name = name
"""
该方法不能通过from module import *导入到另外一个模块中。
但是可以单独导入from module import _name 导入
"""
self.age = age
def _get_information(self):
"""
单下划线命名的变量(包括类,函数,普通变量)
该方法不能通过from module import *导入到另外一个模块中。
但是可以单独导入from module import _get_information 导入
"""
print(self.name, self.age)
return "哈哈哈"
def gee_data(self):
print('ok')
obj1 = Foo('Fred Huang', "24")
# obj1._get_information()
# print(obj1._get_information())
def _get_date():
print('ok')
_name1 = 'huang'
"""
该方法不能通过from module import *导入到另外一个模块中。
但是可以单独导入from module import _get_date,_name 导入
"""

oop2.py文件代码

from oop1 import * # 不会导入单下划线的类,变量,函数
from oop1 import Foo
from oop1 import _name1
foo=Foo('Fred huang','24')
print(foo._name)
print(_name1)

另外双下划线变量,类本身可以访问__变量,但是在其它作用域不行

可以通过_classname__变量来访问

在函数方法内,class内,没有用self修饰的变量;【又为临时变量,只在函数内部有效,obj不能访问】

  • 全局变量:在模块内,所有函数方法外,class外的变量【在内存中有唯一地址,所有实例共享这一个变量】
  • 局部变量:在函数方法内,class内,没有用self修饰的变量;【又为临时变量,只在函数内部有效,obj不能访问】
  • 实例变量:在class内的方法里面,并且用self修饰的变量;【所有的实例变量和实例方法(有self参数的方法),都是obj的属性,可以通过obj直接访问】
  • 静态变量【类变量】:在class内,但是在class内的所有方法外的变量;【类变量的访问和修改都需要用这种格式:类名.变量名,或者在使用前,使用global关键字声明该变量(因为python在函数中会屏蔽类变量,如果不显式指明,这个变量只会当做与类变量同名的局部变量,从而出错)】

如图

Python变量访问权限控制详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
剖析Django中模版标签的解析与参数传递
Jul 21 Python
Django基础之Model操作步骤(介绍)
May 27 Python
Python 使用with上下文实现计时功能
Mar 09 Python
python写入已存在的excel数据实例
May 03 Python
python实现两个经纬度点之间的距离和方位角的方法
Jul 05 Python
python用requests实现http请求代码实例
Oct 31 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
Nov 19 Python
使用TensorFlow直接获取处理MNIST数据方式
Feb 10 Python
python实现滑雪游戏
Feb 22 Python
分布式全文检索引擎ElasticSearch原理及使用实例
Nov 14 Python
yolov5返回坐标的方法实例
Mar 17 Python
python lambda 表达式形式分析
Apr 03 Python
python pandas生成时间列表
Jun 29 #Python
python粘包问题及socket套接字编程详解
Jun 29 #Python
python 基于TCP协议的套接字编程详解
Jun 29 #Python
Python进阶:生成器 懒人版本的迭代器详解
Jun 29 #Python
简单了解Python matplotlib线的属性
Jun 29 #Python
Jacobi迭代算法的Python实现详解
Jun 29 #Python
Gauss-Seidel迭代算法的Python实现详解
Jun 29 #Python
You might like
保存到桌面、设为桌面且带图标的PHP代码
2013/11/19 PHP
php实现仿写CodeIgniter的购物车类
2015/07/29 PHP
详解Laravel设置多态关系模型别名的方式
2019/10/17 PHP
js不是基础的基础
2006/12/24 Javascript
js 屏蔽鼠标右键脚本附破解方法
2009/12/03 Javascript
浏览器加载、渲染和解析过程黑箱简析
2012/11/29 Javascript
jquery默认校验规则整理
2014/03/24 Javascript
JavaScript函数获取事件源的小例子
2014/05/14 Javascript
Javascript判断图片尺寸大小实例分析
2014/06/16 Javascript
Jquery日期选择datepicker插件用法实例分析
2015/06/08 Javascript
在JavaScript应用中使用RequireJS来实现延迟加载
2015/07/01 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
2015/08/25 Javascript
js运动应用实例解析
2015/12/28 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
javascript正则表达式之分组概念与用法实例
2016/06/16 Javascript
vuejs父子组件之间数据交互详解
2017/08/09 Javascript
原生js调用json方法总结
2018/02/22 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
2020/06/28 Javascript
[36:14]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第二局
2016/02/28 DOTA
[46:38]完美世界DOTA2联赛PWL S2 Magma vs PXG 第三场 11.28
2020/12/02 DOTA
python读取json文件并将数据插入到mongodb的方法
2015/03/23 Python
Python求两个文本文件以行为单位的交集、并集与差集的方法
2015/06/17 Python
python使用webdriver爬取微信公众号
2018/08/31 Python
python opencv实现图像边缘检测
2019/04/29 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
2019/12/11 Python
基于plt.title无法显示中文的快速解决
2020/05/16 Python
python自动提取文本中的时间(包含中文日期)
2020/08/31 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
2020/11/17 Python
董事长岗位职责
2013/11/30 职场文书
农业局学习党的群众路线教育实践活动心得体会
2014/03/07 职场文书
国际金融专业自荐信
2014/07/05 职场文书
2014县委书记四风对照检查材料思想汇报
2014/09/21 职场文书
通知的写法
2015/04/23 职场文书
唤醒紫霞仙子,携手再游三界!大话手游X《大话西游》电影合作专属剧情任务
2022/04/03 其他游戏
关于pytest结合csv模块实现csv格式的数据驱动问题
2022/05/30 Python
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers