当我保持构造函数名称与类名相同时,解释器抛出运行时错误?

时间:2015-03-30 06:34:44

标签: python

class animal():
   name = 'Tiger'
   def animal(self,name):
       self.name = name
   def show(self):
       print(self.name)

/*ins = animal()
ins.show()
# OUTPUT = Tiger
ins = animal('Lion')
Type Error: this constructor takes no arguments
*/

当我将构造函数名称保存为init时,一切正常。当构造函数名称与类名相同时,我不知道为什么会出现类型错误?

2 个答案:

答案 0 :(得分:3)

在Python中,与C ++ / Java不同,构造函数不是在类之后命名的,您应该使用 init 来实现构造函数。详细了解here

更具体地说:

  

C ++程序员可能会发现奇怪的是Python类没有显式的构造函数和析构函数。 Python类确实有类似于构造函数的东西: init 方法。

答案 1 :(得分:2)

正如@Ishay所提到的,python没有命名构造函数。

以下应解决您的问题

class animal():
   def __init__(self, name = 'Tiger'):
       self.name = name
   def show(self):
       print(self.name)

ins = animal() #Class instance without animal name
ins.show()    
Tiger

ins = animal('Lion') #Class instance with animal name
ins.show()
Lion