论参数self

Posted 扫驴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了论参数self相关的知识,希望对你有一定的参考价值。

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

 

举个例子:

 1 class a:
 2     pass
 3 
 4 
 5 def fuc(sel):
 6     print (sel.arg)
 7 
 8 
 9 class b:
10     arg = 1
11     def __init__(self,arg):
12         self.arg=arg
13 bb=b(2)
14 
15 
16 a.fuc=fuc#a对象添加fuc方法,sel参数可为任意对象
17 a.fuc(b)
18 a.fuc(bb)
19 
20 a.arg=3
21 a.fuc(a)#甚至可以是他本身,也可以是他的对象aa
22 
23 
24 #但是,当此对象的对象调用该方法时,sel已经默认为调用者本身,不必也不能传递任何参数
25 
26 aa=a()
27 aa.fuc()
28 aa.arg=5
29 aa.fuc()
30 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的主要内容,如果未能解决你的问题,请参考以下文章

图论题目模板,和并查集:以后的图论题目就靠他了

原创:矩阵论学习心得

课外阅读亮剑小说片段 毕业论文

论python3下“多态”与“继承”中坑

论javascript编写优美

片段(Java) | 机试题+算法思路+考点+代码解析 2023