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发送伪造的arp请求
Jan 09 Python
好用的Python编辑器WingIDE的使用经验总结
Aug 31 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
Sep 26 Python
Python制作豆瓣图片的爬虫
Dec 28 Python
python和shell监控linux服务器的详细代码
Jun 22 Python
Python中super函数用法实例分析
Mar 18 Python
Pandas读写CSV文件的方法示例
Mar 27 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
Jul 08 Python
基于Python获取照片的GPS位置信息
Jan 20 Python
python 星号(*)的多种用途
Sep 21 Python
pytorch损失反向传播后梯度为none的问题
May 12 Python
分位数回归模型quantile regeression应用详解及示例教程
Nov 02 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的PSR规范中文版
2013/09/28 PHP
PHP滚动日志的代码实现
2015/06/10 PHP
PHP获取一年有几周以及每周开始日期和结束日期
2015/08/06 PHP
浅谈php中的循环while、do...while、for、foreach四种循环
2016/11/05 PHP
PHP实现中国公民身份证号码有效性验证示例代码
2017/05/03 PHP
Prototype使用指南之range.js
2007/01/10 Javascript
jQuery JSON的解析方式分享
2011/04/05 Javascript
js 去除字符串第一位逗号的方法
2014/06/07 Javascript
jQuery实现ajax的叠加和停止(终止ajax请求)
2016/08/08 Javascript
JS中的hasOwnProperty()和isPrototypeOf()属性实例详解
2016/08/11 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
jquery中用jsonp实现搜索框功能
2016/10/18 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
2016/12/01 Javascript
Vue-Router实现页面正在加载特效方法示例
2017/02/12 Javascript
JavaScript评论点赞功能的实现方法
2017/03/13 Javascript
jQuery编写textarea输入字数限制代码
2017/03/23 jQuery
详解Angular4中路由Router类的跳转navigate
2017/06/09 Javascript
详解vue-resource promise兼容性问题
2017/06/20 Javascript
详解Node使用Puppeteer完成一次复杂的爬虫
2018/04/18 Javascript
vue axios封装及API统一管理的方法
2019/04/18 Javascript
JS实现图片幻灯片效果代码实例
2020/05/21 Javascript
Python实现TCP/IP协议下的端口转发及重定向示例
2016/06/14 Python
python中numpy基础学习及进行数组和矢量计算
2017/02/12 Python
tensorflow获取变量维度信息
2018/03/10 Python
Windows下Anaconda2安装NLTK教程
2018/09/19 Python
Pycharm设置去除显示的波浪线方法
2018/10/28 Python
广州迈达威.net面试题目
2012/03/10 面试题
小学中秋节活动方案
2014/02/06 职场文书
记帐员岗位责任制
2014/02/08 职场文书
舞蹈毕业生的自我评价
2014/03/05 职场文书
班班通校本培训方案
2014/03/12 职场文书
《学会合作》教学反思
2014/04/12 职场文书
教师教学评估方案
2014/05/09 职场文书
工地例会施工汇报材料
2014/08/22 职场文书
2014年业务员工作总结范文
2014/11/17 职场文书
Python pyecharts案例超市4年数据可视化分析
2022/08/14 Python