Python为什么要self

转载 2015年07月09日 15:02:40

Python为什么要self 15 March 2011 20:25 Tuesday by 小屋

接触Python以来,看到类里的函数要带个self参数,一直搞不懂啥麻子原因。晚上特别针对Python的self查了一下,理理。

Python为什么要使用self的原因

Python要self的理由

Python的类的方法和普通的函数有一个很明显的区别,在类的方法必须有个额外的第一个参数 (self ),但在调用这个方法的时候不必为这个参数赋值 (显胜于隐 的引发)。Python的类的方法的这个特别的参数指代的是对象本身,而按照Python的惯例,它用self来表示。(当然我们也可以用其他任何名称来代替,只是规范和标准在那建议我们一致使用self)

为何Python给self赋值而你不必给self赋值?

例子说明:创建了一个类MyClass,实例化MyClass得到了MyObject这个对象,然后调用这个对象的方法MyObject.method(arg1,arg2) ,这个过程中,Python会自动转为Myclass.mehod(MyObject,arg1,arg2)

这就是Python的self的原理了。即使你的类的方法不需要任何参数,但还是得给这个方法定义一个self参数,虽然我们在实例化调用的时候不用理会这个参数不用给它赋值。

实例:

class Python:
 def selfDemo(self):
  print 'Python,why self?'
p = Python()
p.selfDemo()

输出:Python,why self?

把p.selfDemo()带个参数如:p.selfDemo(p),得到同样的输出结果

如果把self去掉的话,

 

class Python:
 def selfDemo():
  print 'Python,why self?'
p = Python()
p.selfDemo()

这样就报错了:TypeError: selfDemo() takes no arguments (1 given)

扩展

self在Python里不是关键字。self代表当前对象的地址。self能避免非限定调用造成的全局变量。

在Python3之后不知道将self隐了没?感觉在Python类里的方法都要带个self这样有点死板

作者: Sjolzy | Google+

--EOF--

python之为什么类中函数的变量声明要加self

class A: def go(self): self.one= 'sdf' def go1(self): print self.onea = A() ...
  • a787264137
  • a787264137
  • 2017年12月10日 11:17
  • 69

Python为什么要self

Python要self的理由 Python的类的方法和普通的函数有一个很明显的区别,在类的方法必须有个额外的第一个参数 (self ),但在调用这个方法的时候不必为这个参数赋值 (显胜于隐 的引...
  • baoendemao
  • baoendemao
  • 2014年06月05日 10:17
  • 353

Python 为什么要self

接触Python以来,看到类里的函数要带个self参数,一直搞不懂啥麻子原因。晚上特别针对Python的self查了一下,理理。 Python要self的理由 Python的类的方...
  • Alpha5
  • Alpha5
  • 2014年01月09日 11:42
  • 918

Python 方法中变量加self和不加的区别

这段代码我觉得很好的说明了python中类的方法在加self和不加self的区别。 1 2 3 4 5 6 7 8 9 ...
  • SmallTankPy
  • SmallTankPy
  • 2017年02月09日 11:12
  • 3405

Python学习笔记(1)——Python为什么要self

(1)Python为什么要self  Python要self的理由 Python的类的方法和普通的函数有一个很明显的区别,在类的方法必须有个额外的第一个参数 (self ),但在调用这个方法的...
  • smailz
  • smailz
  • 2013年07月13日 11:37
  • 311

Python 类中方法的内部变量,命名加'self.'变成 self.xxx 和不加直接 xxx 的区别

先看两个类的方法: >>> class nc(): def __init__(self): self.name ='tester' #name变量加self >>> class mc()...
  • JOJOY_tester
  • JOJOY_tester
  • 2017年01月05日 09:59
  • 3205

Python编写类时需要self的原因

Python的类的方法和普通的函数有一个很明显的区别,在类的方法必须有个额外的第一个参数 (self ),但在调用这个方法的时候不必为这个参数赋值 (显胜于隐 的引发)。Python的类的方法的这个特...
  • cnmilan
  • cnmilan
  • 2013年03月26日 21:21
  • 1442

Python中:self和__init__的含义 + 为何要有self和__init__

背景 回复: 我写的一些Python教程,需要的可以看看 中SongShouJiong的提问: Python中的self,__init__的含义是啥? 为何要有self,__init这些东西...
  • justheretobe
  • justheretobe
  • 2016年02月27日 22:17
  • 7879

python学习——类中为什么要定义__init__()方法

学习Python的类,一直不太理解为什么一定要定义init()方法,现在简要谈一下自己的理解吧。1、不用init()方法定义类 定义一个矩形的类,目的是求周长和面积。class Rectangle(...
  • geerniya
  • geerniya
  • 2017年08月22日 21:12
  • 279

Python中默认参数self的理解

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self...
  • taohuaxinmu123
  • taohuaxinmu123
  • 2014年08月14日 14:43
  • 25920
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python为什么要self
举报原因:
原因补充:

(最多只允许输入30个字)