Python变量访问权限控制详解
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 会按照如下的顺序遍历各个作用域,寻找该变量: 当前函数作用域 任何外围作用域(比如包含当前函数的其他函数) global 作用域,即代码所在的模块的作用域 如果上述作用域内都找不到变量,就会报 NameError 异常. 但是对变量赋值时,规则会有所不同. 如果当前作用域变量已存在,那么其值会被替换. 如果不存在,则会视为在当前作用域定义新变量,而不是向外围作用域中寻找. 如下函数 def function(): flag = True def helper(
-
Python django框架应用中实现获取访问者ip地址示例
本文实例讲述了Python django框架应用中实现获取访问者ip地址.分享给大家供大家参考,具体如下: 在django官方文档中有一段对request.META的解释: HttpRequest.META A standard Python dictionary containing all available HTTP headers. Available headers depend on the client and server, but here are some examples:
-
Python中设置变量访问权限的方法
在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑. 但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的name.score属性: >>> bart = Student('Bart Simpson', 98) >>> bart.score 98 >>> bart.score = 59 >>> bart.score 59 如果要让内部属性不被外部
-
对Python通过pypyodbc访问Access数据库的方法详解
看书上通过ODBC访问数据库的案例,想实践一下在Python 3.6.1中实现access2003数据库的链接,但是在导入odbc模块的时候出现了问题,后来查了一些资料就尝试着使用pypyodbc,最后成功了. 操作步骤: ①安装pypyodbc 目前Python安装通常使用steup.py或者pip工具,在python3.4之后的的版本都默认包含了pip,因此,这里推荐使用pip工具.在cmd中执行:pip install pypyodbc,耐心等待执行完成,pypyodbc模块就已经安装成功
-
python访问系统环境变量的方法
本文实例讲述了python访问系统环境变量的方法.分享给大家供大家参考.具体如下: #-------------------------------- # Name: enviroment_variables.py # Author: Kevin Harris # Last Modified: 02/13/04 # Description: This Python script demonstrates # how to acces enviroment variables. #--------
-
python爬虫简单的添加代理进行访问的实现代码
在使用python对网页进行多次快速爬取的时候,访问次数过于频繁,服务器不会考虑User-Agent的信息,会直接把你视为爬虫,从而过滤掉,拒绝你的访问,在这种时候就需要设置代理,我们可以给proxies属性设置一个代理的IP地址,代码如下: import requests from lxml import etree url = "https://www.ip.cn" headers = {"User-Agent": "Mozilla/5.0 (Wind
-
python使用锁访问共享变量实例解析
本文研究的主要是python使用锁访问共享变量,具体介绍和实现如下. python 做多线程编程时,多个线程若同时访问某个变量,可能会对变量数据造成破坏,pyhon中的threading模块提供了lock对象,lock中的acquire方法用于获取一个锁,而release用于释放一个锁.当一个线程取得锁时,它变获得了共享变量的访问权,此时进入阻塞状态,若其它线程申请访问这个变量,则必须等到这个线程调用release方法释放这个锁.下面是python中使用锁的实例: #!/usr/bin/env
-
Python变量访问权限控制详解
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 "&qu
-
Python入门_条件控制(详解)
条件控制其实就是if...else...(如果...条件是成立的,就做...:反之,就做...)的使用,其基本结构是: 具体看下面这个例子: def account_login(): # 定义函数 password = input('请输入密码:') # 输入密码 if password == '12345': # 如果输入密码是12345,则登录成功 print('登录成功') else: print('密码有误,请重新输入') # 否则提示密码有误,请重新输入 account_login()
-
Python中的流程控制详解
流程控制无非就是if else之类的控制语句,今天我们来看一下Python中的流程控制会有什么不太一样的地方. while语句 python中的while语句和其他语言没有什么不一样,我使用while语句来编写一个斐波拉赫数列: In [56]: while x < 10 : ...: print(x) ...: x, y = y, x+y ...: 0 1 1 2 3 5 8 if 语句 python中的 if 可以和 elif 或者 else 配合使用: >>> x = int
-
MySQL 权限控制详解
mysql权限控制 作为一名DBA,想必大家对MySQL中的权限都不陌生,MySQL中对于权限的控制分为三个层面: 全局性的管理权限,作用于整个MySQL实例级别 数据库级别的权限,作用于某个指定的数据库上或者所有的数据库上 数据库对象级别的权限,作用于指定的数据库对象上(表.视图等)或 者所有的数据库对象上 这里,我们将mysql中的所有权限列出来,最后给出一个特殊的案例来反应mysql权限控制中的一个小bug.首先来看权限列表,权限的顺序按照首字母的顺序进行排列: •All/All Priv
-
Java如何利用Mybatis进行数据权限控制详解
前言 权限控制主要分为两块,认证(Authentication)与授权(Authorization).认证之后确认了身份正确,业务系统就会进行授权,现在业界比较流行的模型就是RBAC(Role-Based Access Control).RBAC包含为下面四个要素:用户.角色.权限.资源.用户是源头,资源是目标,用户绑定至角色,资源与权限关联,最终将角色与权限关联,就形成了比较完整灵活的权限控制模型. 资源是最终需要控制的标的物,但是我们在一个业务系统中要将哪些元素作为待控制的资源呢?我将系统中
-
react高阶组件经典应用之权限控制详解
前言 所谓高级组件,即:接受一个组件作为参数,并且其返回值也为一个react组件 而大家应该都知道,权限控制算是软件项目中的常用功能了.在网站中,权限控制一般分为两个维度:页面级别和页面元素级别. 我们来说说页面元素粒度的权限控制.在某个页面中,有个"创建用户"的按钮,管理员才能看到. 一般想到的做法类似这样 class Page extends Component{ render() { let hasCreatePermission = tool.getAuth("cre
-
vue-router路由懒加载和权限控制详解
vue-router路由懒加载 和权限控制,今天刚好搞了一个基于node token验证的小demo 所以下面介绍下,路由懒加载 1.为什么要使用路由懒加载呢 用vue.js写单页面应用时,会出现打包后的JavaScript包非常大,影响页面加载,我们可以利用路由的懒加载去优化这个问题,当我们用到某个路由后,才去加载对应的组件,这样就会更加高效 2.用法 import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) e
-
python变量的存储原理详解
变量的存储 在高级语言中,变量是对内存及其地址的抽象. 对于python而言,python的一切变量都是对象,变量的存储,采用了引用语义的方式,存储的只是一个变量的值所在的内存地址,而不是这个变量的只本身. 引用语义:在python中,变量保存的是对象(值)的引用,我们称为引用语义.采用这种方式,变量所需的存储空间大小一致,因为变量只是保存了一个引用.也被称为对象语义和指针语义. 值语义:有些语言采用的不是这种方式,它们把变量的值直接保存在变量的存储区里,这种方式被我们称为值语义,例如C语言,采
-
Python 变量的创建过程详解
一.变量创建过程 首先,当我们定义了一个变量name = 'Kwan'的时候,在内存中其实是做了这样一件事: 程序开辟了一块内存空间,将'Kwan'存储进去,再让变量名name指向'Kwan'所在的内存地址.如下图所示: 我们可以通过id()方法查看这个变量在内存中的地址. name = 'Kwan' print(id(name)) 二.变量的修改 一般我们认为修改一个变量就是用新值把就旧值覆盖掉,可Python真是这么实现的么? name = 'Kwan' print(id(name)) na
-
python基础知识(一)变量与简单数据类型详解
1.1变量 变量的命名规则: 1.只能包含字母.数字.下划线,且不能用数字开头 2.不能使用python关键字 3.简短且具有描述性 1.2字符串 python中用引号引起来的都是字符串,单引号双引号都可以 a.字符串的索引 s = 'ABCDEF' #索引 s1 = s[0] s2 = s[-1] s3 = s[0:4] print(s1) #A print(s2) #F print(s3) #ABC,左闭右开 #打印全部 s4 = s[:] #s[0:] print(s4) s5 = s[0
随机推荐
- Vue.js实现拖放效果的实例
- cmd dir结构树显示代码(列出目录文件)
- Oracle11g数据库win8.1系统安装配置图文教程
- 使用pdb模块调试Python程序实例
- 原生js页面滚动延迟加载图片
- IE bug table元素的innerHTML
- asp.net jquery无刷新分页插件(jquery.pagination.js)
- Yii实现自动加载类地图的方法
- C语言中的结构体的入门学习教程
- 通过命令行导入到mysql数据库时出现乱码的解决方法
- 简单实用的反馈表单无刷新提交带验证
- Python编码时应该注意的几个情况
- js装载xml文件然后发向服务器的实现代码
- css图片自适应大小
- javascript中的有名函数和无名函数
- 再次分享18个非常棒的jQuery表格插件
- 微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
- 深入理解C#中常见的委托
- Android Studio导入Project与Module的方法及实例
- 一个简单的自动发送邮件系统(三)