python的类方法为什么要写一个self参数
来源:互联网 发布:微信矩阵管理平台 编辑:程序博客网 时间:2024/05/18 07:09
http://www.douban.com/group/topic/19376685/
python方法为什么要首写一个self函数?
原因有多种。首先是python中几乎所有的东西的一级对象(一级对象的定义:http://en.wikipedia.org/wiki/First-class_object),method也不例外,比如你写一个:
class X:
def f(self, a, b):
...
那么可以这样引用f:
X.__dict__['f']
或者
X.f.__func__
现在问题来了,得到f以后怎么调用?f是一个方法,方法必须作用于对象。如果x是一个X对象,我们可以x.f(...),但是如果是以上面的方式得到的f呢?怎么f让作用于某个对象?最直观的方法就是和参数一起传递进去。
当然的限不同的设计也可以满足上面制。比如不要手写的self参数,增加this关键字,增加一个调用f个格式。这样的设计和pep20第二条不符合。
为理解python的self,不妨对比一下ruby和javascript。ruby的方式是方法不是一级对象,所以绕过了这个问题。javascript没有类,方法在调用时this会绑定到方法所属的对象,函数调用时this绑定到window,函数做构造器调用时this绑定到新对象。这么多规则,比Python复杂。
0 0
- python的类方法为什么要写一个self参数
- Python类中方法的self参数
- Python 为什么要self
- Python为什么要self
- Python为什么要self
- Python为什么要self
- Python为什么要self
- Python为什么要self
- Python为什么要self
- 三篇文章,理解python类中的方法所需要的参数 self
- python之为什么类中函数的变量声明要加self
- Python类中__init__函数和self参数的关系
- python中类中函数参数self的说明
- Python中默认参数self的理解
- Python中默认参数self的理解
- Python中默认参数self的理解
- 在java语言中为什么有时候构造方法有时要构造一个没有参数的方法
- python中的self参数
- mysql innodb master_thread伪代码整理
- 第11周项目六 回文~素数(1)
- SQL2005四个排名函数(row_number、rank、dense_rank和ntile)的比较
- 最近生活
- Android开发教程--自定义接听/挂断电话功能
- python的类方法为什么要写一个self参数
- Sitemesh 3 的使用及配置
- SQL Server 触发器
- Mahout安装与配置
- 【Leetcode】Remove Element in JAVA
- UVa 10213 How Many Pieces of Land?
- [linux]windows上编写的shell脚本linux上报错,Bom问题
- checkbox数组的全选
- Android笔记之自定义日期选择框