【Python】self, __init__(未完)
2014-05-23 09:35
246 查看
为什么需要self?
Python的类的方法与普通函数的一个很明显的区别就是,类的方法必须额外的第一个参数self,但调用这个方法时不必为self赋值。
self指代的其实是对象本身,按照python的惯例,用self表示。
看下面的例子:
正常打印
>>>
hello!
sayHi()去掉self后,报错。
为什么Python会给self赋值但我们却不必?
Python简明教程中说到,创建一个类MyClass, 并将其实例化得到了MyObject这个对象,
调用对象MyObject的方法MyObject.method(arg1, arg2)
在这个过程中Python会自动转为MyClass.method(MyObject, arg1. arg2)
see, 即使类的方法不需要任何参数,但这个方法还是需要定义self参数,虽然在实例化调用的时候不必理会它不用给它赋值。
注意:
self在Python里不是关键字,self指示的是当前对象的地址
__init__
__init__方法在类的实例被创建后立即调用,是Python里最接近C++构造函数的方法。
扮演的角色非常相似,既是第一个被定义的方法,也是第一个被调用的方法。
但不等价于构造函数,因为对象在调用__init__方法时,已经被构造出来了,我们已经有了一个对类的新实例的有效引用。
Python的类的方法与普通函数的一个很明显的区别就是,类的方法必须额外的第一个参数self,但调用这个方法时不必为self赋值。
self指代的其实是对象本身,按照python的惯例,用self表示。
看下面的例子:
正常打印
>>>
hello!
sayHi()去掉self后,报错。
为什么Python会给self赋值但我们却不必?
Python简明教程中说到,创建一个类MyClass, 并将其实例化得到了MyObject这个对象,
调用对象MyObject的方法MyObject.method(arg1, arg2)
在这个过程中Python会自动转为MyClass.method(MyObject, arg1. arg2)
see, 即使类的方法不需要任何参数,但这个方法还是需要定义self参数,虽然在实例化调用的时候不必理会它不用给它赋值。
注意:
self在Python里不是关键字,self指示的是当前对象的地址
__init__
__init__方法在类的实例被创建后立即调用,是Python里最接近C++构造函数的方法。
扮演的角色非常相似,既是第一个被定义的方法,也是第一个被调用的方法。
但不等价于构造函数,因为对象在调用__init__方法时,已经被构造出来了,我们已经有了一个对类的新实例的有效引用。
相关文章推荐
- python中self、_init_和__name__
- [python]对self和_init_的理解
- TensorFlow 学习积累(2): Python类中的__init__() 和 self
- 转载--------Python中:self和__init__的含义 + 为何要有self和__init__
- Python入门(六)——self,类,方法,__init__,类对象,类变量,文件操作,判断回文,pickle模块用法
- 如何理解并正确使用python中的self init
- Python中__init__和self的意义和作用
- Python类中的__init__() 和 self 的解析
- python 继承中的self和__init__
- python中self、_init_和__name__
- Python进阶---self和__init__的含义
- Python中的self和__init()__
- python self __init__
- Python中:self和__init__的含义 + 为何要有self和__init__
- python中self和__init__的含义 + 为何要有self和__init__
- [python]Python中:self和__init__的含义,以及为何要有self和__init__
- Python中:self和__init__的含义 + 为何要有self和__init__
- Python中:self和__init__的含义 + 为何要有self和__init__
- 【整理】Python中self和__init__的含义与使用
- python Parent.__init()和super(Child, self)的区别