python菜鸟求教一个__init__的问题

在学习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__的用处。谢谢。

哆啦的时光机
浏览 333回答 3
3回答

繁华开满天机

__init__类似与C++或者Java,C#里面的构造函数,只不过C++,Java,C#里面的this参数是隐藏的,不需要用户显示的写出来,但是在python,this参数(你可以自己命名为任意 合法变量名称,不一定是self)需要自己手动显示的定义,并且放在第一个参数。类似的F#语言在定义类的时候也是使用python这种方式,还有其他脚本语言也是这样的。
打开App,查看更多内容
随时随地看视频慕课网APP