Python 中的函数的双下划线“__”

  Python中最常见的是类中的带有双下滑线的函数是 __init__()最开始只是知道 有初始化的作用,这里从原理上总结一下。

  在Python中,由这些名字组成的集合所包含的方法称为特殊方法。如果对象实现了这些方法中的某一个,那么这个方法会在特殊情况下(确切的说是根据名字)被Python调用。而几乎没有直接调用它们的必要。

  一、首先讨论__init__(),标准来说它是类的构造方法。当一个对象被创建后,会立即调用构造方法。

  

class Test:
    def __init__(self):
        self.a=42

结果是:

>>> t=Test()
  >>> t.a
  42

  二、接下来讨论常见的特殊方法的集合,它可以创建行为类似于序列或映射的对象。基本的序列和映射的规则很简单,但如果要实现它们的全部功能就需要实现很多魔法函数。

幸好,还是有一些捷径的。

原文地址:https://www.cnblogs.com/xiaobai-2017/p/8322171.html

时间: 2024-08-27 22:57:20

Python 中的函数的双下划线“__”的相关文章

Python中变量名里面的下划线

1 变量名前后都有两个下划线(__X__),表示是系统级变量: 2 变量名前只有一个下划线(_X),表示该变量不是由from module import *导入进来的: 3 变量名前有两个下划线(__X),是类内部的变量: 4 变量名本是就是一个下划线(_),表示在交互模式下,最近一次表达式的返回值. 原文地址:https://www.cnblogs.com/chaoguo1234/p/9164328.html

python 单下划线/双下划线使用总结(转载)

python 单下划线/双下划线使用总结 时间:2013-10-08 10:56来源:www.chengxuyuans.com Python 用下划线作为变量前缀和后缀指定特殊变量/方法. 主要存在四种情形1.    1. object # public    2. __object__ # special, python system use, user should not define like it    3. __object # private (name mangling duri

Django 跨表查询--神奇的双下划线和点

我在django的moles中创建了两个calss,如下: class Project(models.Model):     name = models.CharField(u'项目名称',max_length=32,blank=True)     id = models.CharField(u'项目ID',max_length=32,unique=True,primary_key=True,blank=True)     create_date = models.DateTimeField(u

面对对象之私有属性,以及单、双下划线 | Pythoon

# 在很多程序中会遇到__name,_name的标识符,在类中,如果属性带有双 # 下划线,表示私有属性,通俗的讲,就是不能在类命名空间外被直接调用,但是 # 可以通过方法来调用. # 其实这种表述并不明确,为什么不能被外部直接调用? # 因为,在类被定义的时候,带有双下滑线的属性,它的名字会自动发生改变: # 样式:_Classname__name # 所以,无法直接通过obj.__name访问到值;# 作用:防止子类创建的对象与基类创建的对象出现命名空间冲突的问题; # 单下划线,其实这种标

Django-orm:单表查询、基于对象和双下划线的多表操作、集合查询、分组查询、F查询和Q查询

############################################## 单表操作 ############################################## 简单查: models.User.objects.filter(id=3) # queryset对象,相当于一个列表,放了一个或多个User对象 models.User.objects.filter(id=3).first() # User对象,相当于只去了queryset对象中的第一个 增: 第一种

python中的单下划线和双下划线意义和作用

Python中并没有真正意义上的“私有”,类的属性的的可见性取决于属性的名字(这里的属性包括了函数).例如,以单下划线开头的属性(例如_spam),应被当成API中非公有的部分(但是注意,它们仍然可以被访问),一般是具体实现细节的部分.单下划线常用来实现模块级私有化,当我们使用“from mymodule import *”来加载模块的时候,不会加载以单下划线开头的模块属性. 而以双下划线开头并最多以一个下划线结尾的属性(例如___spam),将会被替换成_classname__spam这样的形

python中的下划线及双下划线

一.Python 用下划线作为变量前缀和后缀指定特殊变量 1. 单下划线开头: _xxx:弱“内部使用”标识,如:”from Module import *”,将不导入所有以下划线开头的对象,包括包.模块.成员 2. 双下划线开头: __xxx:模块内的私有成员,外部无法直接调用. 即:私有类型的变量.只能是允许这个类本身进行访问了.连子类也不可以 3. 双下划线开头和结尾: __xxx__ :系统定义名字, 用户无法控制的命名空间中的“魔术”对象或属性, 如: __name__.__doc__

Python 中的特殊双下划线方法

python类内部部分双下划线特殊方法 __setattr__, __getattr__, __delattr__, hasattr __getattribute__ __getitem__(),__setitem__(), __delitem__() 主程序如下: class Foo: def _inif(self,pname): self.pname = pname def func(): print('i'm func') def __getattr__(self, item): prin

python中的单下划线,双下划线以及两端双下划线

1.在python的解释器中,_是上一条语句的执行结果,最早是CPython施行,到现在其他类型的解释器也在使用2.上面的语句执行结果是在屏幕上打印十行hello world,我们并不需要0-9这些数字,所以没必要给他一个变量名'_'3.单下划线:单下划线的变量是一种程序员之间美丽的约定——只要是这种变量就不要随便在类外部去访问它!!! 但是如果我们在导入模块时来看这个单下划线开头的变量,那就不一样了,在这里这种特殊名字的变量就变成了类似一种某个模块的“私有”变量,因为我们在使用from 模块名