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时,一切正常。当构造函数名称与类名相同时,我不知道为什么会出现类型错误?
答案 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