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处理文本文件中控制字符的方法
Feb 07 Python
Python3中简单的文件操作及两个简单小实例分享
Jun 18 Python
Python 闭包的使用方法
Sep 07 Python
解决pycharm工程启动卡住没反应的问题
Jan 19 Python
pandas read_excel()和to_excel()函数解析
Sep 19 Python
python中bytes和str类型的区别
Oct 21 Python
python实现的读取网页并分词功能示例
Oct 29 Python
如何运行带参数的python脚本
Nov 15 Python
Django中F函数的使用示例代码详解
Jul 06 Python
Django REST Swagger实现指定api参数
Jul 07 Python
Python定时任务APScheduler安装及使用解析
Aug 07 Python
Python第三方库安装缓慢的解决方法
Feb 06 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/10/14 PHP
php实现统计目录文件大小的函数
2015/12/25 PHP
Paypal实现循环扣款(订阅)功能
2017/03/23 PHP
php JWT在web端中的使用方法教程
2018/09/06 PHP
PHP中的self关键字详解
2019/06/23 PHP
PHP 枚举类型的管理与设计知识点总结
2020/02/13 PHP
jQuery创建DOM元素实例解析
2015/01/19 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
2015/03/13 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
动态加载js、css的实例代码
2016/05/26 Javascript
knockoutjs动态加载外部的file作为component中的template数据源的实现方法
2016/09/01 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
2016/10/17 Javascript
ES6字符串模板,剩余参数,默认参数功能与用法示例
2017/04/06 Javascript
全选复选框JavaScript编写小结(附代码)
2017/08/16 Javascript
hammer.js实现图片手势放大效果
2017/08/29 Javascript
Vue 框架之键盘事件、健值修饰符、双向数据绑定
2018/11/14 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
Vue如何使用混合Mixins和插件开发详解
2020/02/05 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
如何通过Proxy实现JSBridge模块化封装
2020/10/22 Javascript
Vant Weapp组件踩坑:picker的初始赋值解决
2020/11/12 Javascript
原生JS实现京东查看商品点击放大
2020/12/21 Javascript
[45:40]Ti4 冒泡赛第二天NEWBEE vs NaVi 1
2014/07/15 DOTA
python实现超简单端口转发的方法
2015/03/13 Python
详解Django中的ifequal和ifnotequal标签使用
2015/07/16 Python
Python PIL读取的图像发生自动旋转的实现方法
2019/07/05 Python
Python telnet登陆功能实现代码
2020/04/16 Python
使用Python解析Chrome浏览器书签的示例
2020/11/13 Python
美国著名珠宝品牌之一:Jared The Galleria Of Jewelry
2016/10/01 全球购物
施华洛世奇天猫官方旗舰店:SWAROVSKI
2017/04/17 全球购物
实习生个人找工作的自我评价
2013/10/30 职场文书
青年文明号事迹材料
2014/01/18 职场文书
乡镇交通安全实施方案
2014/03/29 职场文书
2014年医院个人工作总结
2014/12/09 职场文书
个人工作表现自我评价
2015/03/06 职场文书
忘记Grafana不要紧2种Grafana重置admin密码方法详细步骤
2022/04/07 Servers