此篇文章仅适用于py3.在py2中,a.fuc(x)中的参数x必须是

类a的实例对象,而py3则可以是任意对象。参考绑定方法和非绑定方法

当一个对象添加了一个方法,并且此方法的第一个参数为self,或者其他任意名称的时候(只要不为空即可),则此参数指代的是某个对象。当此对象调用此方法时,传递的这第一个参数可以是任意对象,可以是他的对象,甚至可以他本身。但当是此对象的对象在调用该方法时,该参数已经默认了指代的是当前这个对象的对象(这是python设计者的设计,没为什么),在调用的时候不能显氏的传递给此参数任何值,否则会报错(因为此参数已经有值,此值为调用者本身)

举个例子:

 class a:
pass def fuc(sel):
print (sel.arg) class b:
arg = 1
def __init__(self,arg):
self.arg=arg
bb=b(2) a.fuc=fuc#a对象添加fuc方法,sel参数可为任意对象
a.fuc(b)
a.fuc(bb) a.arg=3
a.fuc(a)#甚至可以是他本身,也可以是他的对象aa #但是,当此对象的对象调用该方法时,sel已经默认为调用者本身,不必也不能传递任何参数 aa=a()
aa.fuc()
aa.arg=5
aa.fuc()
aa.fuc(aa)#报错,不能传递任何参数

同样:

class a:
pass
def fuc(sel)
print ("ddd") aa=a()
aa.fuc=fuc#对象aa添加方法fuc,aa在调用fuc时,必须传递参数,此参数可以是任意对象 aa.fuc(aa)
aa.fuc()#报错,没给sel传参,除非是aa的对象不用传参,本例中aa不是类对象所以无法创建aa的对象

论参数self的更多相关文章

  1. 【.net 深呼吸】细说CodeDom(6):方法参数

    本文老周就给大伙伴们介绍一下方法参数代码的生成. 在开始之前,先补充一下上一篇烂文的内容.在上一篇文章中,老周检讨了 MemberAttributes 枚举的用法,老周此前误以为该枚举不能进行按位操作 ...

  2. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

  3. Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数

    上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...

  4. Scrapy框架爬虫初探——中关村在线手机参数数据爬取

    关于Scrapy如何安装部署的文章已经相当多了,但是网上实战的例子还不是很多,近来正好在学习该爬虫框架,就简单写了个Spider Demo来实践.作为硬件数码控,我选择了经常光顾的中关村在线的手机页面 ...

  5. 【每日一linux命令4】常用参数:

     下面所列的是常见的参数(选项)义: --help,-h                              显示帮助信息 --version,-V                        ...

  6. 【每日一linux命令3】参数(或称选项)顺序

    一般除了特殊情况,参数是没有顺序的.举例而言,输入"–a –v"与输入"–v –a"以及"–av" 的执行效果是相同的.但若该参数后指定了要 ...

  7. C# 中参数验证方式的演变

    一般在写方法的时候,第一步就是进行参数验证,这也体现了编码者的细心和缜密,但是在很多时候这个过程很枯燥和乏味,比如在拿到一个API设计文档的时候,通常会规定类型参数是否允许为空,如果是字符可能有长度限 ...

  8. js中参数不对应问题

    因为js是一种弱类型的编程语言,对数据类型的要求没有其他编程语言的要求严格,所以在定义函数的时候不需要像java和C#一样对其传入参数的类型进行定义.那么传入参数的个数有没有影响呢?今天小猪就做了个实 ...

  9. C++中的变长参数

    新参与的项目中,为了使用共享内存和自定义内存池,我们自己定义了MemNew函数,且在函数内部对于非pod类型自动执行构造函数.在需要的地方调用自定义的MemNew函数.这样就带来一个问题,使用stl的 ...

  10. nodejs进阶(5)—接收请求参数

    1. get请求参数接收 我们简单举一个需要接收参数的例子 如果有个查找功能,查找关键词需要从url里接收,http://localhost:8000/search?keyword=地球.通过前面的进 ...

随机推荐

  1. CodeMirror mode编写

    Writing CodeMirror Modes Modes typically consist of a single JavaScript file. This file defines, in ...

  2. 《Linux内核分析》 第一节 计算机是如何工作的

    第一节 计算机是如何工作的 张嘉琪 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-100002900 ...

  3. c# dataGridView 表头格式设置不管用

    解决办法: EnableHeaderVisualStyles设为false

  4. 冲刺Two之站立会议5

    昨天对视频音频的内容查询收集了相关资料,今天就主要对此进行了加工.先是使两台PC进行通信,不断进行测试.改进:测试.改进.最后初见成效,但还是没有达到我们最初的标准.

  5. linux 远程连接报错 10038或者10061 或者10060

    1.检查linux的mysql是否开启 2.检查mysql的user表的host是否是% 3.检查my.cnf文件是否绑定本地 4.防火墙3306端口是否开启 假如以上都没问题,那最大的原因就是我折腾 ...

  6. java之常量折叠

    为什么会写着篇博客,因为昨天看了关于final关键字的解析.但是有个问题始终没有得到解决,于是请教了我qq上之前添加的知乎大神.他给我回复的第一条消息:常量折叠.身为渣渣猿的我立马查询了这个概念.这是 ...

  7. 页面用一个遮罩层显示加载,加载完后隐藏该div

    <div id="background" class="background" style="display: none; "> ...

  8. 插入数据时候获取返回的id 很重要 不要忘记写select last_insert_id()

  9. photoshop cc 2018破解补丁(pscc2018注册机) 附使用方法

    1.下载破解程序 破解文件自行到  http://www.ddooo.com/softdown/109954.htm 下载 博主可以到本博客的文件-->pscc2018zcj_109954.ra ...

  10. linux(1):VMware虚拟软件下安装centos6.8

    前言:Linux是一种自由和开放源代码的类UNIX操作系统,继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统.本人学习Linux已经有一段时间了,从一开始的小白到现在的略有所悟 ...