Python-self
2018-01-01 20:15
211 查看
Python中在定义类函数时,会有一个self参数,不是很清楚这个self参数的作用,特地在此理一下。
首先self不是必须的,不是必须的有两个含义:
self不一定要叫self,其他的名字也可以,但是按照惯例最好还是用self
self在大多数情况下是必须要加的,但是有一种例外,下面会讲到
self指向的是类的实例而不是类:
在大部分时候我们定义类函数时都要有self函数,否则会报错:
这是因为
如果我们非要不定义self,那么只能这样使用:
关于self的作用,我查的资料说self能避免非限定调用造成的全局变量,不是很理解这句话
首先self不是必须的,不是必须的有两个含义:
self不一定要叫self,其他的名字也可以,但是按照惯例最好还是用self
self在大多数情况下是必须要加的,但是有一种例外,下面会讲到
self指向的是类的实例而不是类:
class test: def a(self): print(self) p = test() p.a()
<__main__.test object at 0x000001F0AB6725C0>
在大部分时候我们定义类函数时都要有self函数,否则会报错:
class test: def a(): print(self) p = test() p.a()
TypeError Traceback (most recent call last) <ipython-input-4-2e3e6e4f67f8> in <module>() 4 5 p = test() ----> 6 p.a() TypeError: a() takes 0 positional arguments but 1 was given
这是因为
p.a()实际上相当于
test.a(p)
如果我们非要不定义self,那么只能这样使用:
class test: def a(): print(__class__) test.a()
<class '__main__.test'>
关于self的作用,我查的资料说self能避免非限定调用造成的全局变量,不是很理解这句话
相关文章推荐
- 【整理】python 中 self, init, __ ,if __name__ == '__main__'
- python Parent.__init()和super(Child, self)的区别
- Python __str__(self)和__unicode__(self)
- 关于Python中的self用法的详细解释 + 深度机器学习中的batch
- Python类中的__init__() 和 self 的解析
- Python为什么要self
- Python处理json的错误 obj, end = self.scan_once(s, idx) ValueError: Expecting property name: line 2 column 17 (char 18)
- Python 爬虫 raise self._value IndexError: list index out of range
- 一篇文章让你彻底搞清楚Python中self的含义
- 如何理解并正确使用python中的self init
- python中的类中属性元素加self.和不加self.的区
- python中self.__class__
- 理解python中的self
- python学习过程对self的理解
- 一篇文章搞懂Python中self的含义
- [python]对self和_init_的理解
- Python之self
- Python Class self __init__笔记
- Python中:self和__init__的含义 + 为何要有self和__init__
- Python中self的理解