Python学习笔记(1)——Python为什么要self
2013-07-13 11:37
423 查看
(1)Python为什么要self
Python要self的理由
Python的类的方法和普通的函数有一个很明显的区别,在类的方法必须有个额外的第一个参数 (self ),但在调用这个方法的时候不必为这个参数赋值 (显胜于隐 的引发)。Python的类的方法的这个特别的参数指代的是对象本身,而按照Python的惯例,它用self来表示。(当然我们也可以用其他任何名称来代替,只是规范和标准在那建议我们一致使用self)
例子说明:创建了一个类MyClass,实例化MyClass得到了MyObject这个对象,然后调用这个对象的方法MyObject.method(arg1,arg2) ,这个过程中,Python会自动转为Myclass.mehod(MyObject,arg1,arg2)
这就是Python的self的原理了。即使你的类的方法不需要任何参数,但还是得给这个方法定义一个self参数,虽然我们在实例化调用的时候不用理会这个参数不用给它赋值。
我的示例代码:
class food:
def __init__(self, name):
self.name = name
def call(self):
print "I am %s." % self.name
a = food("apple")
a.call()
输出结果为:I am apple.
当我把方法改为def call():
python报错:TypeError: call() takes no arguments (1 given)
参考文章:http://www.cnblogs.com/wangkangluo1/archive/2011/09/23/2186479.html
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 food:
def __init__(self, name):
self.name = name
def call(self):
print "I am %s." % self.name
a = food("apple")
a.call()
输出结果为:I am apple.
当我把方法改为def call():
python报错:TypeError: call() takes no arguments (1 given)
参考文章:http://www.cnblogs.com/wangkangluo1/archive/2011/09/23/2186479.html
相关文章推荐
- Python学习笔记 --- dict中的keys(), values() 取出来的值为什么是无序的?
- Python学习笔记--为什么需要使用__name__=='__main__'
- Python学习笔记之疑问 2:python的函数定义为什么没有开始和结束符
- 流畅的python学习笔记第一篇之为什么要学习这本书
- Python学习笔记1:Self
- 我的Python学习笔记——为什么学习
- Python3学习笔记(二):编码为什么python2升级到python3时就遇到需要再加.encode()
- python_小白的修炼笔记_2018/1/4_self和__init__()学习
- Python学习笔记——基础语法(上)
- Python学习笔记之四——类型
- Python学习笔记(1)语法规则
- Python学习笔记(三)
- Python学习笔记-复杂表达式
- python 学习笔记(4) python函数和模块
- Python学习笔记(7)-函数
- Python练习题 10-2 C语言学习笔记
- python小白入门学习笔记-爬虫入门
- Python学习笔记 - 12.10
- python学习笔记,以此开始记录自己的python学习过程
- Python学习笔记:元组