Python编写类时需要self的原因
2013-03-26 21:21
204 查看
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能避免非限定调用造成的全局变量。
为何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能避免非限定调用造成的全局变量。
相关文章推荐
- Python编写的com组件发生R6034错误的原因与解决办法
- PYthon 中函数编写时需要注意的地方
- Python入门:自定义类中的方法被调用的时候,什么情况下需要传入self,什么时候不需要
- Windows环境下使用sublime编写python,需要配置的环境以及中文输出
- Python编写的com组件发生R6034错误的原因与解决办法
- 编写Python程序访问需要cookie的网页
- python脚本的编写和需要的模块
- 零基础学python-15.1 为什么需要编写函数
- 使用Python IDLE编写程序后无法保存的原因。
- Python3基础 self是什么及其用法 类中大多数方法需要self参数
- python3 自己编写了一个Mac下分类软件,每次只需要启动 terminal 终端就会自动分类。
- 零基础学python-15.1 为什么需要编写函数
- 三篇文章,理解python类中的方法所需要的参数 self
- 零基础学python-15.1 为什么需要编写函数
- 对于写bash脚本的朋友,read命令是不可或缺的,需要实践一下就可以了解read命令的大致用途: 编写一个脚本: #!/bin/bash # hao32 test read echo -e "Pl
- Python使用Mechanize模块编写爬虫的要点解析
- python实现编写一个@performance,它可以打印出函数调用的时间。
- 【脚本语言系列】关于PythonNoSQL数据库处理redis,你需要知道的事
- c#程序调用c++编写dll需要注意问题
- 编写代码时需要注意的规范