Python self

来源:互联网 发布:学云计算用了解嵌入式 编辑:程序博客网 时间:2024/05/20 15:38

self代表类的实例,而不是类!self可以取得该类的所有方法和变量!在同一个类下的不同方法也可以用self.func()互相调用。

self只有在类的方法中才有,且类中方法的第一参数必须是实例自己,独立的方法中是不需要有的。

self与c++中的this指针作用相同,python中也可以不使用self,用其他词语替换也可以达到同样的效果。

self在定义时不可以省略,在传参时可以省略。

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self。

虽然你可以给这个参数任何名称,但是强烈建议你使用self这个名称——其他名称都是不赞成你使用的。使用一个标准的名称有很多优点——你的程序读者可以迅速识别它,如果使用self的话,还有些IDE(集成开发环境)也可以帮助你。

给C++/Java/C#程序员的注释Python中的self等价于C++中的self指针和Java、C#中的this参考。

你一定很奇怪Python如何给self赋值以及为何你不需要给它赋值。举一个例子会使此变得清晰。假如你有一个类称为MyClass和这个类的一个实例MyObject。当你调用这个对象的方法MyObject.method(arg1, arg2)的时候,这会由Python自动转为MyClass.method(MyObject, arg1, arg2)——这就是self的原理了。

这也意味着如果你有一个不需要参数的方法,你还是得给这个方法定义一个self参数。


声明add()方法时,若不加self,则提示

TypeError: add() takes exactly 2 arguments (3 given)
File "D:\PythonWorkplace\PythonDemo\Tet.py", line 15, in <module>
  test.add(1,3) 

错误。


拓展一下:

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


self是一种习惯,如上面的程序,把sayHi(self)换成sayHi(fles),同样可以得到正确的输出。


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 履带搬运 履带收割机 履带式起重机 履带式旋耕机 履带自走式旋耕机 履带车建筑大亨 小型履带水稻收割机 履带式拖拉机 二手履带吊出售转让 履带式锚索钻机 履带式毛边机 履带式全液压钻机 履带移动破碎站 履带旋喷钻机 履带式破碎站 履带移动式破碎站 抛丸机橡胶履带 履带式微耕机价格 小型履带底盘总成价格 履带式液压锚杆钻机 山地运输车履带 橡胶履带价格 履带是什么意思 小型农用履带运输车 农用小型履带拖拉机 履带生产厂家 履带底盘生产厂家 收割机履带生产厂家 全地形履带车 雪地履带车模拟 履带挖掘式装载机 履带通过式抛丸机 履带式钻机厂家 抛丸机履带生产厂家 挖掘机橡胶履带板 履带桩机厂家 履带潜孔钻机 小型履带底盘 小型履带底盘总成 挖掘机橡胶履带价格 久保田收割机履带