1.单下划线 变量前的单下划线表示表面上私有 ,但是其实这样的实例变量外部是可以访问的,但是,按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意访问”. 2.双下划线 变量前的双下划线表示真正的私有,实际上的私有,只有内部可以访问,外部不能访问 但是有窍门,可以在类里面增加get__namedede和set__namedede这样的方法来突破限制,而且还能在方法里做验证. 3.其他(如:init): 名称前后的双下划线是一种惯例,对Pyth…
一.私有变量的定义 在Python中,有以下几种方式来定义变量: xx:公有变量 _xx:单前置下划线,私有化属性或方法,类对象和子类可以访问,from somemodule import *禁止导入 __xx:双前置下划线,私有化属性或方法,无法在外部直接访问(名字重整所以访问不到) __xx__:双前后下划线,系统定义名字(不要自己发明这样的名字) xx_:单后置下划线,用于避免与Python关键词的冲突 如以下例子所示,我在test类中定义了num,_num 和 __num三个属性,并创建…
单前导下划线 _var 1.特点一 在PEP8约定中定义,以单个下划线开头的变量或方法仅供内部使用.用于指定该名称属性为“私有”.为了使其他人(或你自己)使用这些代码时将会知道以“_”开头的名称只供内部使用 这个在python中并非是一种强制规定,程序的行为不受影响.只为提示其他程序员这个变量或方法只在内部使用.不像Java那样有 私有 和 公有变量强制的区别开. 以下划线“_”为前缀的名称(如_spam)应该被视为API中非公开的部分(不管是函数.方法还是数据成员).此时,应该将它们看作是一种…
首先看一段代码: class Foo(): def __init__(self): print "__init__ method" def public_method(self): print "public_method" def __private_method(self): print "__private_method" def _halfprivate_method(self): print "_halfprivate_met…
转载:http://blog.csdn.net/zhu_liangwei/article/details/7667745 引子 我热情地邀请大家猜测下面这段程序的输出: class A(object):        def __init__(self):               self.__private()               self.public()        def __private(self):               print 'A.__private()…
Python 中,下划线对解释器有特殊的含义,而且是内建标识符所使用的符号,使用时要多加留意. 在 Python3 的面向对象中,双下划线开头的变量和方法表名为私有变量和私有方法. __private_attrs: 两个下划线开头,声明该属性为私有,不能再类的外部被使用或者直接访问.在类的内部的方法中使用self进行调用 self.__private_attrs __private_method: 两个下划线开头,声明该方法为私有方法,只能在类的内部调用,不能再类的外部调用,self.__pri…
Python内置了一些特殊变量,以前后上下划线标注,同时我们自己要想定义一些变量,不想让外部访问,又该怎么做呢?更多内容请参考:Python学习指南 访问限制 在class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的辅助逻辑. 但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的name.score属性: bart = Student('Bar Simpson', 59) bar.score 59 bar.score =…
前言 在Python的类里面,所有属性和方法默认都是公共的:但Python也可以设置受保护.私有类型的变量or方法 受保护类型的变量.方法 一般称为:protected变量 #!/usr/bin/env python # -*- coding: utf-8 -*- class protected: _protected = "受保护变量" name = "test" def test(self): print("实例属性:", self._pro…
我们知道在Python中,变量名类似__xxx__的,也就是以双下划线开头并且以双下划线结尾的变量和方法,是特殊变量,特殊变量是可以直接访问的,不是私有变量,所以,一般实例变量和类变量以及方法不能用__xxx__这样的方式命名.大家可以参考<第7.8节 Python中隐秘的类封装方法 >对Python中变量封装的描述. 那么如果自己写的文件中直接使用这样的变量会怎么样呢? 经老猿验证测试,Python并没有限制这种命名规则的使用,还是可以正常定义和使用.如图: 但老猿不建议大家这样使用. 之所…
必知必会13条 <1> all(): 查询所有结果 <2> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误. <3> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 <4> exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象 <5> values(*field): 返回一个ValueQuerySet——一个特殊的Q…