在学习python,看到__init__这个地方不太懂,下面是学习资料上的一段代码:
#!/usr/bin/python
# Filename: class_init.py
class Person:
def __init__(self, name):
self.name = name
def sayHi(self):
print 'Hello, my name is', self.name
p = Person('Swaroop')
p.sayHi()
输出:
$ python class_init.py
Hello, my name is Swaroop
不太明白__init__方法的必要性
就自己写了一个没用__init__的模块
#!/usr/bin/python
# Filename: class_test.py
class Person:
def sayHi(self, name):
self.name = name
print 'Hello, my name is', self.name
p = Person('Swaroop')
p.sayHi()
报错:
$ python class_test.py
Traceback (most recent call last):
File "class_test.py", line 9, in <module>
p = Person('Swaroop')
TypeError: this constructor takes no arguments
希望能有前辈给解答一下我自己的代码报错的原因,希望能从程序运行的流程讲解一下__init__的用处。谢谢。
用第二个方法是
__init__是你的初始化对象的构造方法,
def__init__(self,name):
self.name=name
会把传进的
'Swaroop'赋给属性name,你去掉
__init__那就是默认你的构造方法不含参数,这时候你在传一个参数进去当然会报错。
http://csscn.org/server/python/ch11s05.html
看下这个
__init__就是类似cpp里面的构造函数,和他对应的还有个析构函数__del__
__init__相当于构造函数,而且在Python类中,方法必须带有self参数。。。
后面的要求觉得有点奇葩哈。。
详见:
【整理】Python中:self和__init__的含义+为何要有self和__init__
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。