我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python中怎么实现访问控制

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python中怎么实现访问控制

本篇文章给大家分享的是有关Python中怎么实现访问控制,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

属性的种类

通过之前的内容,我们知道,在定义一个类时,类内部可以有属性和方法。我们仍然创建一个学生类Student。

Python中怎么实现访问控制

Student类

定义好一个类后,我们就可以在类的外部通过生成对象来使用对象的实例变量或调用成员方法来操作数据,从而隐藏类内部的代码逻辑。但是,从类Student的定义来看,在类的外部,我们依然可以通过“对象.属性”的方式对属性进行任意修改。

Python中怎么实现访问控制

修改属性

上述代码中,我们在类的外部生成了一个对象student1,通过student1.name的方式将name修改为CCC,student1的name属性就被修改了。然而,在面向对象编程中,我们往往不希望类内部的属性被类外部的代码直接修改和访问,因此,私有变量的概念应运而生了。

私有变量顾名思义是私有的,类的私有变量只允许类内部代码操作。Python中,私有变量就是在属性开头加两个下划线“__”。

Python中怎么实现访问控制

私有变量

可以看到,一旦将属性设置为私有变量,如果我们试图通过“对象.私有变量”来直接访问的话,Python就会报错了。

Python中,类的属性可以分为公有变量和私有变量两种,公有变量允许类的外部代码通过“对象.属性”的方式直接进行修改和获取,而私有变量则不允许外部代码直接访问。其中,私有变量的命名以两个下划线“__”开头。

需要注意的是,Python中变量名类似__xxx__的,也就是以双下划线开头,并以双下划线结尾的变量不属于私有变量,因此,我们不能使用类似__name__这样的变量名作为私有变量。

在开发过程中,我们有时会碰到以一个下划线开头的实例变量名,比如_age。

Python中怎么实现访问控制

单下划线开头的实例变量

从上述代码中我们可以看到,以一个下划线开头的实例变量是可以直接在类的外部代码中通过“对象.属性”的方式进行访问的。但是,Python中有个约定俗成的规定,如果你看到别人的代码中使用了这种以一个下划线开头的实例变量,那么你应该把它当做私有变量,不要直接在外部代码中进行访问。

私有变量的访问

在定义类的时候,如果把属性设置成私有变量,就不能在类的外部代码中直接访问了。上述代码中,如果我们想要修改或获取私有变量__name,我们可以通过给Student类创建成员方法get_name( )和set_name( )来对__name进行获取和修改。

Python中怎么实现访问控制

成员方法set/get

有了get_name( )方法和set_name( )方法后,我们就可以通过对象调用成员方法来对私有变量__name进行访问了。或许看到这里,你会有这样的疑问:通过“对象.属性”的方式也可以对属性进行修改和获取,为什么一定要设置成私有变量呢?除了封装性上的要求外,使用成员方法还可以给修改设置限制。

Python中怎么实现访问控制

设置修改限制

上述代码中,我们将学生的年龄限制在10~40之间。此时,若外部代码试图用一个不在此范围内的年龄进行修改时,就会修改失败。通过成员方法修改私有变量可以对传入的参数进行校验,避免传入无效的参数。

如果你刚刚在设置私有变量__name的时候试过在外部代码中使用“对象.__name = 值”的方式,你会发现Python并没有报错,甚至在赋值后可以使用“print(对象.__name)”获取到__name的值。实际上,你用上述方式操作的__name并不是定义类时的那个私有变量__name,我们看一下以下代码。

Python中怎么实现访问控制

对象绑定实例变量

可以看到,虽然通过“对象.属性”的方式我们修改了一个叫__name的变量,但当我们调用get_name( )方法的时候,私有变量__name的值并没有被修改。这是因为,Python允许对象绑定任意属性,student1.__name操作的__name只是新绑定的一个属性而已,它和定义类时定义的私有变量__name虽然名字相同,却是两个不同的变量。

那么私有变量是不是一定不能从外部访问呢?在Python中,我们之所以不能直接访问私有变量__name,是因为Python解释器对外把__name变量改成了_Student__name。换句话说,其实我们是可以通过“_类名+私有变量名”的方式来直接访问私有变量的。

Python中怎么实现访问控制

私有变量的变向直接访问

虽然我们可以通过这种变相的方式直接访问私有变量,但是在实际开发中,我们基本上是抵制这种写法的,因为不同版本的Python解释器可能会把私有变量改成不同的变量名。

以上就是Python中怎么实现访问控制,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python中怎么实现访问控制

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python中怎么实现访问控制

本篇文章给大家分享的是有关Python中怎么实现访问控制,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。属性的种类通过之前的内容,我们知道,在定义一个类时,类内部可以有属性和方法
2023-06-16

python中怎么实现访问限制

python中怎么实现访问限制,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。说明1、若要使内部属性不被外部访问,可在属性名称前加两条下划线__。2、在Python中,如果实例的
2023-06-20

Centos中TCPWrappers访问控制实现

一、TCP Wrappers概述TCP Wrappers将TCP服务程序“包裹”起来,代为监听TCP服务程序的端口,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序,如下图所示,TCP Wrap
2022-06-04

nginx 访问限制与访问控制的实现

Nginx访问控制和访问限制机制允许管理员限制对特定请求或客户端的访问,提高应用程序和API安全性。AuthBasic、AuthDigest、AuthPAM和AuthRequest模块提供高级认证方案。LimitRequest、LimitZone和GeoIP2模块支持速率限制、区域限制和地理位置限制。应用示例展示了这些模块的实际用法,如IP地址限制、认证访问、地理位置限制和基于请求标头的限制。Nginx的访问控制和访问限制机制为定制安全策略提供了强大而灵活的解决方案。
nginx 访问限制与访问控制的实现
2024-04-02

nginx 访问限制与访问控制的实现

本文详细介绍了如何使用Nginx实现访问限制和访问控制,包括IP地址限制、主机名限制、UserAgent限制以及权限控制、IP地址白名单、URL授权等。通过在Nginx配置文件中添加特定的指令,可以灵活地控制用户访问特定URL、目录或资源,有效管理网站的安全性和可用性。
nginx 访问限制与访问控制的实现
2024-04-02

CentOS 中如何实现TCP Wrappers访问控制

本篇文章为大家展示了CentOS 中如何实现TCP Wrappers访问控制,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、TCP Wrappers概述TCP Wrappers将TCP服务程序“包
2023-06-05

Kubernetes Ingress怎么实现细粒度IP访问控制

这篇“Kubernetes Ingress怎么实现细粒度IP访问控制”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Kuber
2023-07-06

SpringSecurity实现访问控制url匹配

本文主要介绍了SpringSecurity实现访问控制url匹配,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2022-11-13

kubernetes中如何实现RBAC 角色访问控制

小编给大家分享一下kubernetes中如何实现RBAC 角色访问控制,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一:RBAC体系结构二:RBAC角色绑定流程三:说明1.RBAC的优势a.对集群中的资源和非资源权限均有完
2023-06-04

CentOS中TCP Wrappers访问控制怎么配置

本文小编为大家详细介绍“CentOS中TCP Wrappers访问控制怎么配置”,内容详细,步骤清晰,细节处理妥当,希望这篇“CentOS中TCP Wrappers访问控制怎么配置”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来
2023-06-28

Kubernetes Ingress实现细粒度IP访问控制

这篇文章主要为大家介绍了Kubernetes Ingress实现细粒度IP访问控制,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-15

Centos 7.4中的远程访问控制的实现方法

一、SSH远程管理SSH是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。与早期的Telent、RSH、RCP、等应用相比,SSH协议提供了更
2022-06-04

DynamoDB中怎么设置权限和访问控制

在DynamoDB中,可以使用IAM来设置权限和访问控制。以下是一些常见的权限和访问控制设置:IAM策略:可以通过IAM策略来控制哪些用户或角色可以对DynamoDB资源进行操作,以及可以进行的操作类型(例如读取、写入、删除等)。数据权限
DynamoDB中怎么设置权限和访问控制
2024-04-09

Apache如何实现基于IP的访问控制

Apache可以通过使用mod_authz_host模块来实现基于IP的访问控制。您可以通过编辑Apache的配置文件来配置基于IP的访问控制规则。以下是一个示例配置,只允许特定IP地址范围内的用户访问您的网站:
Apache如何实现基于IP的访问控制
2024-07-05

Apache如何实现基于组的访问控制

Apache可以通过使用基于组的访问控制模块来实现基于组的访问控制。其中,最常用的模块是mod_authz_groupfile模块和mod_authz_dbd模块。mod_authz_groupfile模块允许管理员使用一个简单的文本文件来
Apache如何实现基于组的访问控制
2024-07-05

Oracle实现细粒度访问控制的步骤

目录实现细粒度访问控制的步骤详细步骤和代码示例1. 创建策略函数2. 创建并应用策略3. 验证细粒度访问控制示例脚本总结细粒度访问控制(Fine-Grained Access Control, FGAC)是oracle数据库中用于提供行级和
Oracle实现细粒度访问控制的步骤
2024-09-05

SpringBoot中自定义注解实现控制器访问次数限制实例

今天给大家介绍一下SpringBoot中如何自定义注解实现控制器访问次数限制。在Web中最经常发生的就是利用恶性URL访问刷爆服务器之类的攻击,今天我就给大家介绍一下如何利用自定义注解实现这类攻击的防御操作。其实这类问题一般的解决思路就是:
2023-05-31

php怎么实现限制访问次数

可以通过以下几种方法来实现限制访问次数:1. 使用数据库:在数据库中创建一个表,记录每个用户的访问次数和最后访问时间等信息。每次用户访问时,先检查该用户的访问次数是否超过限制,如果超过则拒绝访问;如果未超过,则更新该用户的访问次数和最后访问
2023-09-26

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录