此篇文章仅适用于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. Daily Scrumming* 2015.12.8(Day 1)

    一.团队scrum meeting照片 二.今日总结 姓名 WorkItem ID 工作内容 签入链接以及备注说明  江昊 任务942 学习使用github,在github上建立组织并将所有队员纳入, ...

  2. 调研ios开发环境的演变

    一:ios的发展演变: 以下两句为百度百科IOS,可自行查阅,不多赘述,就Ctrl+c,Ctrl+v两句表示一下. 2007年1月9日苹果公司在Macworld展览会上公布,随后于同年的6月发布第一版 ...

  3. HDU 2022 海选女主角

    http://acm.hdu.edu.cn/showproblem.php?pid=2022 Problem Description potato老师虽然很喜欢教书,但是迫于生活压力,不得不想办法在业 ...

  4. java 读写 excle 完整版

    pom.xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</a ...

  5. Docker(二十三)-Docker使用pipework配置本地网络

    需求 在使用Docker的过程中,有时候我们会有将Docker容器配置到和主机同一网段的需求.要实现这个需求,我们只要将Docker容器和主机的网卡桥接起来,再给Docker容器配上IP就可以了. 下 ...

  6. NGINX.conf配置文件支持pathinfo

    # power by www.php.cn #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/e ...

  7. java 栈和堆

  8. djang-rest-framework学习-day1

    1.老套路:setting 设置复制粘贴!,必要库的安装: 一些库安装失败的解决办法:在 https://www.lfd.uci.edu/~gohlke/pythonlibs/ 上找到下载,然后使用用 ...

  9. MT【125】四点共圆

    (2017湖南省高中数学竞赛16题) \(AB\)是椭圆\(mx^2+ny^2=1(m>0,n>0,m\ne n)\)的斜率为 1 的弦.\(AB\)的垂直平分线与椭圆交于两点\(CD\) ...

  10. MT【95】由参数前系数凑配系数题2

    提示:都是看$a,b$前的系数做的$a=4/3,b=2/3;a+b=\le2$,一样的可以求得$a+b$的最小值-1,当$b=\frac{1}{3},a=\frac{-4}{3}$时取到等号.此题是清 ...