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 相关文章推荐
一个超级简单的python web程序
Sep 11 Python
python实现从web抓取文档的方法
Sep 26 Python
10种检测Python程序运行时间、CPU和内存占用的方法
Apr 01 Python
python实现二维插值的三维显示
Dec 17 Python
Python实现Linux监控的方法
May 16 Python
用python打印菱形的实操方法和代码
Jun 25 Python
python中用logging实现日志滚动和过期日志删除功能
Aug 20 Python
python3的pip路径在哪
Jun 23 Python
用python实现学生管理系统
Jul 24 Python
Python xmltodict模块安装及代码实例
Oct 05 Python
Pycharm github配置实现过程图解
Oct 13 Python
Python爬虫基础讲解之请求
May 13 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之PHP语法学习笔记1
2006/12/17 PHP
php和editplus正则表达式去除空白行
2015/04/17 PHP
PHP中的魔术方法总结和使用实例
2015/05/11 PHP
jquery插件lazyload.js延迟加载图片的使用方法
2014/02/19 Javascript
基于socket.io和node.js搭建即时通信系统
2014/07/30 Javascript
Javascript对象字面量的理解
2016/06/22 Javascript
JS简单生成两个数字之间随机数的方法
2016/08/03 Javascript
js判断浏览器是否支持严格模式的方法
2016/10/04 Javascript
js中new一个对象的过程
2017/02/20 Javascript
微信小程序滚动Tab实现左右可滑动切换
2017/08/17 Javascript
es6中的解构赋值、扩展运算符和rest参数使用详解
2017/09/28 Javascript
详解VSCode配置启动Vue项目
2019/05/14 Javascript
Layui弹出层 加载 做编辑页面的方法
2019/09/16 Javascript
使用原生JS实现滚轮翻页效果的示例代码
2020/05/31 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
2020/08/08 Javascript
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
Python函数参数类型*、**的区别
2015/04/11 Python
Python中处理字符串之islower()方法的使用简介
2015/05/19 Python
Python中tell()方法的使用详解
2015/05/24 Python
python3序列化与反序列化用法实例
2015/05/26 Python
Python黑魔法Descriptor描述符的实例解析
2016/06/02 Python
Python2与python3中 for 循环语句基础与实例分析
2017/11/20 Python
Python基于TCP实现会聊天的小机器人功能示例
2018/04/09 Python
python实现泊松图像融合
2018/07/26 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
2019/07/22 Python
基于Python实现剪切板实时监控方法解析
2019/09/11 Python
python 项目目录结构设置
2020/02/14 Python
Python 统计位数为偶数的数字代码详解
2020/03/15 Python
Django-migrate报错问题解决方案
2020/04/21 Python
Python列表推导式实现代码实例
2020/09/09 Python
财务人员个人自荐信范文
2013/09/26 职场文书
酒店营销策划方案
2014/02/07 职场文书
劳动竞赛活动方案
2014/02/20 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
教师自查自纠材料
2014/10/14 职场文书
基于PostgreSQL/openGauss 的分布式数据库解决方案
2021/12/06 PostgreSQL