python中有两个下划线__的是内置方法,一个下划线_或者没有下划线的可能是属性,也可能是方法,也可能是类名,如果在类中定义的就是类的私有成员. >>> dir(__builtins__)['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BufferError', 'BytesWarning', 'DeprecationWarning', 'EOFError', 'Ellipsis', '…
  单下划线.双下划线.头尾双下划线说明: __foo__: 定义的是特殊方法,一般是系统定义名字 ,类似 __init__() 之类的. _foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import * __foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了. 来源: http://www.runoob.com/python/python-object.h…
首先看一段代码: 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…
我们知道在Python中,变量名类似__xxx__的,也就是以双下划线开头并且以双下划线结尾的变量和方法,是特殊变量,特殊变量是可以直接访问的,不是私有变量,所以,一般实例变量和类变量以及方法不能用__xxx__这样的方式命名.大家可以参考<第7.8节 Python中隐秘的类封装方法 >对Python中变量封装的描述. 那么如果自己写的文件中直接使用这样的变量会怎么样呢? 经老猿验证测试,Python并没有限制这种命名规则的使用,还是可以正常定义和使用.如图: 但老猿不建议大家这样使用. 之所…
什么是魔术方法 在Python中,所有以 __ 双下划线包起来的方法,都统称为 Magic Method 魔术方法,也叫双下划线方法 有哪些重要的魔术方法? __new__ https://www.cnblogs.com/poloyy/p/15236309.html __init__ https://www.cnblogs.com/poloyy/p/15189562.html __str__ https://www.cnblogs.com/poloyy/p/15202541.html __rep…
面向对象之 反射,双下方法 1. 反射 计算机科学领域主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省) python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 主要适用于四种情况: 1.对对象的反射 class Foo: f = '类的静态变量' def __init__(self,name,age): self.name=name self.age=age def say_hi(self): print('hi,%…
具体区别看下面例子 class A: def __init__(self,name='Andy'): self._name = name class B: def __init__(self,name = 'Jack',age=19): self.__name = name # 私有属性(变量),只有类对象自己能访问,子类也不能访问 self._age = age # 保护变量,类,及子类对象可以访问 class C(B): def h(self): print('hello') a = A()…
Python中单下划线和双下划线: 一.分类 (1).以单下划线开头,表示这是一个保护成员,只有类对象和子类对象自己能访问到这些变量. 以单下划线开头的变量和函数被默认是内部函数,使用from module import *时不会被获取,但是使用import module可以获取. (2).以单下划线结尾仅仅是为了区别该名称与关键词 (3).双下划线开头,表示为私有成员,只允许类本身访问,子类也不行.在文本上被替换为_class__method  (4).双下划线开头,双下划线结尾.一种约定,P…
Python 中,下划线对解释器有特殊的含义,而且是内建标识符所使用的符号,使用时要多加留意. 在 Python3 的面向对象中,双下划线开头的变量和方法表名为私有变量和私有方法. __private_attrs: 两个下划线开头,声明该属性为私有,不能再类的外部被使用或者直接访问.在类的内部的方法中使用self进行调用 self.__private_attrs __private_method: 两个下划线开头,声明该方法为私有方法,只能在类的内部调用,不能再类的外部调用,self.__pri…
       from:https://zhuanlan.zhihu.com/p/30553607 小编在最初使用上Python之后,就一发不可收拾,人生苦短.我用Python,不光是因为其优雅简洁,更是因为它强大的扩展性,特别是一些Python内置的私有属性,熟练地掌握之后使得在开发过程中更灵活.更高效,今天小编就细数一些常用的私有属性,希望能够帮助到新手朋友们. Python的隐藏属性无处不在,内置的私有属性往往是双下划线开头,双下划线结尾,这里我们从模块到对象,由上往下的来列举常用的属性用…
python补充 any() [来自菜鸟教程] any() 函数用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True. 元素除了是 0.空.FALSE 外都算 TRUE. 函数等价于: def any(iterable): for element in iterable: if element: return True return False >>>any(['a', 'b', 'c', 'd']) # 列表l…
Django是一款优秀的web框架,有着自己的ORM数据库模型.在项目中一直使用django数据库,写一篇文章专门记录一下数据库操作.略写django工程创建过程,详写查询过程.可以和sqlalchemy对比来看,会发现有很多想通的地方,例如外键,外键关联关系等.上一篇sqlalchemy查询文章 目录: 1.Django环境搭建 2.数据库建表 3.写入数据 4.查询语句 Django环境搭建 1.安装django pip install django 2.创建工程 django.admin…
定义:双下方法是特殊方法,他是解释器提供的.由双下划线+方法名+双下划线 .它具有特殊意义的方法,双下方法主要是python源码程序员使用的,我们在开发中尽量不要使用双下方法,但是深入研究双下方法,更有益于我们阅读源码. 调用:不同的双下方法有不同的触发方式,就好比盗墓时触发的机关一样,不知不觉就触发了双下方法,例如:__init__ 一. __len__ class A: def __init__(self): self.a = 1 self.b = 2 def __len__(self):…
Python 入门 之 双下方法 1.双下方法 ​ 定义:双下方法是特殊方法,它是解释器提供的 由双下划线加方法名加双下划线 方法名的具有特殊意义的方法,双下方法主要是python源码程序员使用的,我们在开发中尽量不要使用双下方法,但是深入研究双下方法,更有益于我们阅读源码. (1)调用:不同的双下方法有不同的触发方式, <1> __ len__ -- len() 触发 class A(object): def __init__(self,name): self.name = name pri…
一. 反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩. python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 四个可以实现自省的函数 下列方法适用于类和对象(一切皆对象,类本身也是一个对象) class Foo:    f = '…
Python面向对象06 /元类type.反射.函数与类的区别.特殊的双下方法 目录 Python面向对象06 /元类type.反射.函数与类的区别.特殊的双下方法 1. 元类type 2. 反射 3. 函数与类的区别 4. 特殊的双下方法 1. 元类type type:获取对象从属的类 Python中一切皆对象,类在某种意义上也是一个对象 Python中自己定义的类,以及大部分内置类,都是由type元类(构建类)实例化得来的 # type 获取对象从属于的类 print(type(A)) pr…
目录 Python面向对象06 /元类type.反射.函数与类的区别.特殊的双下方法 1. 元类type 2. 反射 3. 函数与类的区别 4. 特殊的双下方法 1. 元类type type:获取对象从属的类 Python中一切皆对象,类在某种意义上也是一个对象 Python中自己定义的类,以及大部分内置类,都是由type元类(构建类)实例化得来的 # type 获取对象从属于的类 print(type(A)) print(type(str)) print(type(dict)) type与ob…
Django---ORM的常用字段和自定义字段,DjangoORM字段与数据库类型对应,字段参数和Meta的参数,Django的admin操作,13中orm操作方法,单标的双下方法 一丶ORM常用字段和自定义字段 常用字段 AutoField # 主键 自增的整形字段,必填参数primary_key=True,则成为数据库的主键.无该字段时,django自动创建. 一个model不能有两个AutoField字段. CharField # 字符串 字符类型,必须提供max_length参数.max…
中文,免费,零起点,完整示例,基于最新的Python 3版本.https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 一.选择题 1. Python中单下划线_foo与双下划线__foo与__foo__的成员,下列说法正确的是? A B C A._foo 不能直接用于’from module import *’ B. __foo解析器用_classname__foo来代替这个名字,以区…
单下划线开头(_) 在模块中使用单下划线开头 模块中使用单下划线(_)开头定义函数.全局变量和类不能被模块外部以: from module import *形式导入. 但可以用:from module import _func形式单独导入. 当然定义函数.全局变量和类前面有2个或者更多下划线开头也不可以用 from module import *的形式导入. # 单下划线开头的函数 def _my_abs(num): return 'my_abs:' + str(abs(num)) # 单下划线…
1.python中双下划线(__str__)代表这个变量是特殊变量,是可以直接访问的 __xxx___ 定义的是特列方法.像__init__之类的 2.python前面双划线(__name)代表这个变量是私有变量 私有变量只有内部可以访问,外部不能访问. 双下划线开头的实例变量是不是一定不能从外部访问呢?其实也不是.不能直接访问__name是因为Python解释器对外把__name变量改成了_${classname}__name,所以,仍然可以通过_${classname}__name来访问__…
通常Python类中会有_和__的方法,是指什么意思呢?如下: 双下划线表示内部不允许访问,一个下划线表示这样的实例变量外部是可以访问的,但是,按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意访问”. 双下划线开头的实例变量是不是一定不能从外部访问呢?其实也不是.不能直接访问name是因为Python解释器对外把name变量改成了_studentname,所以,仍然可以通过_studentname来访问__name变量. 具体看下面例子就…
说道这里我们需要稍微暂停一下.前面我们说到了类是作为一个对象存放容器.这个容器里面有属性和方法.最好的理解类的方式就是把类想想成一个容器. 然后构造了一个析构函数和构造函数,然后又对object和self进行了解释,最后又说了一下重写.我们发现类作为一个存放对象的容器,其类也是一个对象. 类也有自己的__main__,__init__,__class__等属性.我们发现了,越来越多的时候,在Python里面用了很多下划线来表示这些意思.下划线分双下划线和单下划线两种,一共又存在5中组合,这5中组…
使用单下划线(_one_underline)开头表示方法不是API的一部分,不要直接访问(虽然语法上访问也没有什么问题). 使用双下划线开头(__two_underlines)开头表示子类不能覆写该方法.除非你真的知道你在干什么,否则不要使用这种方式. 当你想让自己定义的对象也可以像Python内置的对象一样使用Python内置的一些函数或操作符(比如len.add.+.-.==等)时,你可以定义该类方法. 当然还有些属性只在末尾加了但下划线,这仅仅是为了避免我们起的一些名字和Python保留关…
(1)_xxx "单下划线 " 开始的成员变量相当于私有变量,也叫做保护变量,意思是只有类实例和子类实例能访问到这些变量,需通过类提供的接口进行访问(可以定义有点像java中的getter.setter方法,借助方法访问,而不是直接对变量动刀子):不能用'from module import *'导入.其实,Python并没有真正的私有化支持,用下划线得到的是伪私有,也就是说如果你强行要用也是可以的,但不符合python的规范.我们应该尽量避免重新定义以下划线开头的变量. (2)__x…
1.双下划线开头和结尾 Python中存在一些特殊的方法,有些方法以双下划线 “__” 开头和结尾,它们是Python的魔法函数,比如__init__()和__str__等等.不用要这种方式命名自己的变量或者函数. class A: def __init__(self, text): self.text = text def __str__(self): return self.text a = A("test") print(a) # 输出test 2.双下划线开头 在前面加上“__…
看mentor的脚本时,遇到self._item.callspec.getparam('')语句,理解起来比较困难,找到一篇文章,记录的比较详细,特别记录一下,以备复习. 附链接地址:http://www.chengxuyuans.com/Python/67370.html 顺带粘一下正文,方便大家学习: 主要存在四种情形    1. object # public    2. __object__ # special, python system use, user should not de…
1.单下划线(_) 通常情况下,单下划线(_)会在以下3种场景中使用: 1.1 在解释器中: 在这种情况下,"_"代表交互式解释器会话中上一条执行的语句的结果.这种用法首先被标准CPython解释器采用,然后其他类型的解释器也先后采用. >>> _ Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name '_…
首先原谅一个菜鸟叫他“两头下划线”.记得在windows编程中,很多宏定义使用下划线+大写,给人逼格很高的错觉.对于Python下划线的认识,大概是从__dict__这个属性开始的,看__dict__的名字,首先她是一个字典,key是类或对象的所有成员,value是成员对应的值.我们举个简单的例子说明单下划线,双下划线,两头下划线的区别. >>> class student(object): __name = 0 _sex = 'male' >>> student.__…
默认情况下,Python中的成员函数和成员变量都是公开的(public),在python中没有类似public,private等关键词来修饰成员函数和成员变量.在python中定义私有变量只需要在变量名或函数名前加上 ”__“两个下划线,那么这个函数或变量就是私有的了.在内部,python使用一种 name mangling 技术,将 __membername替换成 _classname__membername,也就是说,类的内部定义中,所有以双下划线开始的名字都被"翻译"成前面加上单…