<dl id="opymh"></dl>

<div id="opymh"></div>
      <div id="opymh"><tr id="opymh"></tr></div>

        <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

        <em id="opymh"></em>

        <em id="opymh"><ol id="opymh"></ol></em>

              频道栏目
              首页 > 程序开发 > Web开发 > Python > 正文
              利用Python实现权限设置的详细教程
              2018-07-27 14:40:35         来源:Python新世界  
              收藏   我要投稿

              一、私有化的实现

              Python中想定义一个类是比较简单的,比如要定义一个Person类,如下代码即可:

              \

              ?#27604;?#25105;们也可以给类添加相应的属性,比如Person的姓名,年龄,性别等,并且在new一个Person对象后可以对这些属性进行修改,如下代码所示:

              \

              Python是面向对象的语言,我们都知道面向对象的三大特点:?#22363;小?#23553;装?#25237;?#24577;。而在上面的代码中,我们可以轻易地通过person. 调用属性来访问和修改值,这明显不符合面向对象中封装的思想。比如对于Person类中的年龄属性,可能比较私人,所以我们不希望可以?#25105;?#30340;访问和修改它的值。在Java中,我们是通过private关键字来装饰属性私有,那么在Python中有没有类似的关键字呢?显然是有的,在Python中采取在变量名前加__(两个下划线)的方式来将属性私有。如下代码所示:

              \

              初看上面的代码,似乎感觉并没有达到私有的目的,因为我们通过p1.age还是成功地进行了赋值,程序并没有报错。其实这里是因为Python可以动态地给对象增加属?#38498;?#26041;法,这句话相当于动态地给p1这个对象增加了一个age属性。所以在我们做了赋值操作之后,我们再次打印p1,age的值依然是18。说明我们确实已经将类里的age属性进行的私有。同理方法的私有也是一样的处理。

              二、私有化的注意事项

              在Python中,有几种方式来定义变量:

              1、以单划线开头:这种类型的变量可以通过对象.调用,但是它表示的意思是我可以调用,但请把我视为是私有的。而且如果是通过from xxx_module import *是无法访?#23454;模?#20294;是如果是import xxx_module的方式,则可以访?#23454;劍?#31867;对象和子类也都可以访问。

              2、仅以双划线开头:这种类型的变量就是私有。但是它可以通过__类名__变量名来访问,但强烈建议不要这样做

              3、以双划线开头,并以它结尾:这种类型的变量在Python中通常都表示具有特殊意义的变量,比如__init__,__str__等。所以我们在定义变量时不要这样定义

              4、仅以单划线结尾:这种类型的变量是用于避免与Python关键字进行冲突所采取的一种解决办法

              如下图演示访问权限效果:

              \

              \

              三、property的使用

              上面的介绍了,通过加双划线开头的方式实现了变量和方法。参照在学Java时的思路,如果想要访问私有变量,我们会给变量添加get和set方法。同样我们在Python中也是一样的处理,代码如下所示:

              \

              但是这样看着似乎不是很方便,?#30475;?#37117;要调用一个方法。有没有可能像之前一样调用p1. age = 28就能直接赋?#30340;兀?#26174;然在Python中是可以的,这就要用到property。

              property的定义:

              \

              使用代码示例:

              \

              说明:

              1. property接受四个参数,分别是get, set, del, doc,前三个参数分别对应get方法,set方法,del方法,顺序不能出错。最后一个参数是doc,相当于对方法进行说明。

              2. property返回一个property属性,返回值的变量名与最终对象. 后面的名称是一致的

              观察上面的代码,我们仍然需要多写一行property的代码,而Python其实提供了一个更方便的实现方式来达到上述要求,即使用@property。说明如下:

              \

              示例代码如下:

              \

              说明:

              1. @property相当于对age方法进行了一个装饰,它使得我们能通过对象.方法名来调用对应的属性

              2. @property所装饰的方法名与对象 . 调用的名称要保持一致

              3. @property会生成另外的装饰器,@方法名.setter, @方法名.getter, @方法名.deleter,分别对应set, get, del方法。这里get方法用得很少,因为已经通过@property直接对应到了get方法

              点击复制链接 与好友分享!回本站首页
              上一篇:python数据分析之numpy基础代码展示
              下一篇:python数据分析之pandas实例解析
              相关文章
              图文推荐
              点击排行

              关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

              版权所有: 红黑联盟--致力于做实用的IT技术学习网站

              极速飞艇好假
              <dl id="opymh"></dl>

              <div id="opymh"></div>
                  <div id="opymh"><tr id="opymh"></tr></div>

                    <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

                    <em id="opymh"></em>

                    <em id="opymh"><ol id="opymh"></ol></em>

                          <dl id="opymh"></dl>

                          <div id="opymh"></div>
                              <div id="opymh"><tr id="opymh"></tr></div>

                                <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

                                <em id="opymh"></em>

                                <em id="opymh"><ol id="opymh"></ol></em>

                                      36选7福彩黑龙江 吧游捕鱼怎么样 必赢真人龙虎斗送彩金 今天特马 中国福彩网app 大赢家湖南幸运赛车 三肖中特期期准铁算盘 吉林十一选五多少期 三、香港曾氏二肖中特 双色球复式32 中国对韩国排球比分 排列五2008全年走势图 pk10历史开奖记录查询 黑彩票平台提现技巧 欢乐升级2019