Chinaunix首页 | 论坛 | 博客
  • 博客访问: 306238
  • 博文数量: 33
  • 博客积分: 132
  • 博客等级: 入伍新兵
  • 技术积分: 1002
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-16 22:24
个人简介

学习计算机科学与技术专业,喜欢计算机,喜欢linux,喜欢编程

文章存档

2014年(7)

2013年(12)

2012年(14)

分类: Python/Ruby

2014-07-29 11:08:59

最近使用 python类进行编程,发现了一个有趣的东西——self。(我使用的系统是 64 位的 Fedora 18,使用的是 python2.7
然后我写了一个代码
  1. class url():
  2.     ...
  3.     ...
  4.     def portview():
  5.         ...
  6.         ...

  7. if __name__ == '__main__':
  8.     address = url()
  9.     address.portview()
类似这段代码,然后我运行python程序,就出现了下面错误:

为什么会出现 takes no arguments (1 given) 呢,问题就出现在 self。
我将上面代码的第四行

  1. def portview():
改为:

  1. def portview(self):
问题就解决了。

那么为什么要使用 self 呢?

python类的方法和普通的函数的一个最大的区别就是在类中的方法必须有一个额外的参数——self,而且是第一个参数。当然了,这个只是显式的表现出来,在调用的时候不必给这个参数进行赋值。
调用类方法的时候,他会默认给你的参数增加一个变量进行初始化self,这个是隐式的增加,就以我刚才的代码为例:

  1. address.portview()
会自动转换为:

  1. address.portview(url)

尽管你的类的方法不需要任何参数,但还是得给这个方法定义一个self参数,在调用的时候我们完全不用理会这个参数。

self代表当前对象的地址。self能避免非限定调用造成的全局变量。





阅读(6955) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~