Python中self的理解(二)
来源:互联网 发布:在b站做网络直播有延迟 编辑:程序博客网 时间:2024/05/21 00:46
最近使用 python类进行编程,发现了一个有趣的东西——self。
然后我写了一个代码
类似这段代码,然后我运行python程序,就出现了下面错误:
为什么会出现 takes no arguments (1 given) 呢,问题就出现在 self。
我将上面代码的第四行
改为:
问题就解决了。
那么为什么要使用 self 呢?
python类的方法和普通的函数的一个最大的区别就是在类中的方法必须有一个额外的参数——self,而且是第一个参数。当然了,这个只是显式的表现出来,在调用的时候不必给这个参数进行赋值。
调用类方法的时候,他会默认给你的参数增加一个变量进行初始化self,这个是隐式的增加,就以我刚才的代码为例:
会自动转换为:
然后我写了一个代码
- class url():
- ...
- ...
- def portview():
- ...
- ...
- if __name__ == '__main__':
- address = url()
- address.portview()
为什么会出现 takes no arguments (1 given) 呢,问题就出现在 self。
我将上面代码的第四行
- def portview():
- def portview(self):
那么为什么要使用 self 呢?
python类的方法和普通的函数的一个最大的区别就是在类中的方法必须有一个额外的参数——self,而且是第一个参数。当然了,这个只是显式的表现出来,在调用的时候不必给这个参数进行赋值。
调用类方法的时候,他会默认给你的参数增加一个变量进行初始化self,这个是隐式的增加,就以我刚才的代码为例:
- address.portview()
- address.portview(url)
尽管你的类的方法不需要任何参数,但还是得给这个方法定义一个self参数,在调用的时候我们完全不用理会这个参数。
self代表当前对象的地址。self能避免非限定调用造成的全局变量。
你一定很奇怪Python如何给self赋值以及为何你不需要给它赋值。举一个例子会使此变得清晰。假如你有一个类称为MyClass和这个类的一个实例MyObject。当你调用这个对象的方法MyObject.method(arg1, arg2)的时候,这会由Python自动转为MyClass.method(MyObject, arg1, arg2)——这就是self的原理了。
这也意味着如果你有一个不需要参数的方法,你还是得给这个方法定义一个self参数。
给C++/Java/C#程序员的注释Python中的self等价于C++中的self指针和Java、C#中的this参考。
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中self的含义
- python中self的作用
- Python中self的含义
- Python中self的含义
- [python]对self和_init_的理解
- python学习过程对self的理解
- python中的self理解
- 以ThreadStart方式实现多线程
- iOS 简单播放音效
- 了解 <script> 元素以及那些似曾相识但又不惹人注意的xxx
- POJ 3132
- 海量数据中找出出现次数最多的前10个URL
- Python中self的理解(二)
- Activity的启动
- python主函数
- HTTPS解析
- lua调用shell 脚本
- 数据结构-线性表-JAVA描述
- day14 python css position relative absolute
- Android中的Intent(意图)的使用
- bootstrap的一些常用知识