iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python中怎么实现访问控制
  • 577
分享到

Python中怎么实现访问控制

2023-06-16 20:06:32 577人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

本篇文章给大家分享的是有关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中怎么实现访问控制,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网Python频道。

--结束END--

本文标题: Python中怎么实现访问控制

本文链接: https://www.lsjlt.com/news/285246.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Python中怎么实现访问控制
    本篇文章给大家分享的是有关Python中怎么实现访问控制,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。属性的种类通过之前的内容,我们知道,在定义一个类时,类内部可以有属性和方法...
    99+
    2023-06-16
  • python中怎么实现访问限制
    python中怎么实现访问限制,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。说明若要使内部属性不被外部访问,可在属性名称前加两条下划线__。在Python中,如果实例的变量名以...
    99+
    2023-06-20
  • CentOS 中如何实现TCP Wrappers访问控制
    本篇文章为大家展示了CentOS 中如何实现TCP Wrappers访问控制,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、TCP Wrappers概述TCP Wrappers将TCP服务程序“包...
    99+
    2023-06-05
  • SpringSecurity实现访问控制url匹配
    目录一、访问控制url匹配1.anyRequest()2.antMatcher()3.regexMatchers()3.1介绍3.2两个参数时使用方式一、访问控制url匹配 在前面讲...
    99+
    2022-11-13
    SpringSecurity 访问控制url匹配 SpringSecurity url匹配
  • Kubernetes Ingress怎么实现细粒度IP访问控制
    这篇“Kubernetes Ingress怎么实现细粒度IP访问控制”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“...
    99+
    2023-07-06
  • kubernetes中如何实现RBAC 角色访问控制
    小编给大家分享一下kubernetes中如何实现RBAC 角色访问控制,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一:RBAC体系结构二:RBAC角色绑定流程三:说明1.RBAC的优势a.对集群中的资源和非资源权限均有完...
    99+
    2023-06-04
  • CentOS中TCP Wrappers访问控制怎么配置
    本文小编为大家详细介绍“CentOS中TCP Wrappers访问控制怎么配置”,内容详细,步骤清晰,细节处理妥当,希望这篇“CentOS中TCP Wrappers访问控制怎么配置”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来...
    99+
    2023-06-28
  • redis中怎么设置访问控制权限
    本篇文章为大家展示了redis中怎么设置访问控制权限,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。redis作为一个高速数据库,在互联网上,必须有对应的安全机制来进...
    99+
    2024-04-02
  • Kubernetes Ingress实现细粒度IP访问控制
    目录业务场景业务场景 有这么一个业务场景:业务平台还是通过Kubernetes进行编排对外提供服务。然后其后台管理部分,出于安全的考虑,只允许特定的IP才能访问。如何实现? 目前,...
    99+
    2023-05-15
    Kubernetes Ingress IP访问控制 Kubernetes Ingress
  • MySQL数据库中访问控制的实现原理是什么
    本篇文章为大家展示了MySQL数据库中访问控制的实现原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。MySQL 访问控制实际上由两个功能模块共同组成,一个是...
    99+
    2024-04-02
  • DynamoDB中怎么设置权限和访问控制
    在DynamoDB中,可以使用IAM来设置权限和访问控制。以下是一些常见的权限和访问控制设置: IAM策略:可以通过IAM策略来控...
    99+
    2024-04-09
    DynamoDB
  • 使用Python控制IE访问网站
    这里介绍一下怎样利用Python 2.7和Python Win32 Extensions来控制浏览器访问一个网页。 首先需要到Python的官网下载Python 2.7.3 Windows Installer,下载后文件名为pytho...
    99+
    2023-01-31
    网站 Python
  • SpringBoot中自定义注解实现控制器访问次数限制实例
    今天给大家介绍一下SpringBoot中如何自定义注解实现控制器访问次数限制。在Web中最经常发生的就是利用恶性URL访问刷爆服务器之类的攻击,今天我就给大家介绍一下如何利用自定义注解实现这类攻击的防御操作。其实这类问题一般的解决思路就是:...
    99+
    2023-05-31
    spring 控制器 制器
  • 阿里云服务器访问国内实现远程控制与访问
    在当今信息时代,远程访问服务器已成为企业业务运营中必不可少的一部分。特别是在国内,由于地理位置和网络环境的限制,企业可能需要通过阿里云服务器来访问国内的数据资源和业务系统。本文将详细介绍如何通过阿里云服务器访问国内,并提供相关的解决方案和建...
    99+
    2023-12-16
    阿里 远程控制 服务器
  • winform跨线程访问控件怎么实现
    在WinForm中,如果要在一个线程中访问另一个线程中的控件,可以使用Control类的Invoke方法或BeginInvoke方法...
    99+
    2023-09-13
    winform
  • 怎样浅谈Java访问控制机制
    怎样浅谈Java访问控制机制,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java 访问控制机制的原理是:在某些策略配置文件中预定义好某些代码对某些资源具有某些操作权限,当...
    99+
    2023-06-17
  • php怎么实现限制访问次数
    可以通过以下几种方法来实现限制访问次数:1. 使用数据库:在数据库中创建一个表,记录每个用户的访问次数和最后访问时间等信息。每次用户...
    99+
    2023-09-26
    php
  • wpf跨线程访问控件怎么实现
    在WPF中,跨线程访问控件可以使用Dispatcher对象来实现。Dispatcher对象是一个线程相关的对象,它提供了一种将操作发...
    99+
    2023-10-23
    wpf
  • PHP 访问控制的实施方案
    访问控制方法:基于角色的访问控制 (rbac):根据角色分配权限。基于属性的访问控制 (abac):根据用户属性分配权限。实战案例:在电子商务网站中,仅管理员可以访问管理仪表板。使用 r...
    99+
    2024-05-04
    php 访问控制 access
  • Db2中怎么配置安全性和访问控制
    在IBM Db2中,您可以配置安全性和访问控制通过以下步骤: 使用Db2 Control Center或命令行工具设置Db2的安...
    99+
    2024-03-08
    Db2
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作