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卸载之后重新安装的方法
Mar 15 Python
Python命令行解析模块详解
Feb 01 Python
Python3多进程 multiprocessing 模块实例详解
Jun 11 Python
python绘制热力图heatmap
Mar 23 Python
Python设计模式之状态模式原理与用法详解
Jan 15 Python
pandas数据集的端到端处理
Feb 18 Python
python3的url编码和解码,自定义gbk、utf-8的例子
Aug 22 Python
pytorch实现seq2seq时对loss进行mask的方式
Feb 18 Python
Python连接SQLite数据库并进行增册改查操作方法详解
Feb 18 Python
python 下划线的不同用法
Oct 24 Python
Python标准库之typing的用法(类型标注)
Jun 02 Python
python迷宫问题深度优先遍历实例
Jun 20 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
利用static实现表格的颜色隔行显示的代码
2007/09/02 PHP
PHP通用检测函数集合
2011/02/08 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
2013/02/06 PHP
php连接mssql数据库的几种方法
2013/02/21 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
2014/05/05 PHP
php使用MySQL保存session会话的方法
2015/06/18 PHP
PHP中explode函数和split函数的区别小结
2016/08/24 PHP
PHP Swoole异步Redis客户端实现方法示例
2019/10/24 PHP
JS遮罩层效果 兼容ie firefox jQuery遮罩层
2010/07/26 Javascript
javascript 防止刷新,后退,关闭
2010/08/07 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
2013/12/11 Javascript
AngularJS中的过滤器使用详解
2015/06/16 Javascript
javascript入门教程基础篇
2015/11/16 Javascript
jquery实现网站列表切换效果的2种方法
2016/08/12 Javascript
解决layer.open后laydate失效的问题
2019/09/06 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
node.JS二进制操作模块buffer对象使用方法详解
2020/02/06 Javascript
基于html+css+js实现简易计算器代码实例
2020/02/28 Javascript
Python的函数的一些高阶特性
2015/04/27 Python
python 性能提升的几种方法
2016/07/15 Python
Python+matplotlib+numpy实现在不同平面的二维条形图
2018/01/02 Python
Python3.7实现中控考勤机自动连接
2018/08/28 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
Python进阶之自定义对象实现切片功能
2019/01/07 Python
关于python之字典的嵌套,递归调用方法
2019/01/21 Python
python3通过selenium爬虫获取到dj商品的实例代码
2019/04/25 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
2021/02/01 Python
瑞士国际航空官网:SWISS
2016/07/21 全球购物
为有想象力的人提供的生活方式商店:Firebox
2018/06/04 全球购物
性能服装:HYLETE
2018/08/14 全球购物
党章学习思想汇报
2014/01/14 职场文书
会计专业毕业自荐书范文
2014/02/08 职场文书
药品业务员岗位职责
2014/04/17 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
Python内置数据结构列表与元组示例详解
2021/08/04 Python
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
2022/06/14 Golang