Python的TypeError
关于TypeError: object() takes no parameters
在看书的时候,跟着书上的代码敲
代码如下:
# 创建dog类
class Dog:
"""一次模拟小狗的简单测试"""
def _init_(self, name, age):
"""初始化属性name和age"""
self.name = name
self.age = age
def sit(self):
"""模拟小狗被命令蹲下时"""
print(self.name.title() + " is now sitting.")
def roll_over(self):
"""模拟小狗被命令打滚时"""
print(self.name.title() + " rolled over!")
# 创建一个表示特定小狗的实例
my_dog = Dog('willie', 6)
print("My dog's name is " + my_dog.name.title() + '.')
print("My dog is " + str(my_dog.age) + " years old.")
接下来在Pycharm中运行时报错:
C:\Users\Tracy\AppData\Local\Programs\Python\Python36\python.exe D:/Python_work/09_类/9.1创建和使用类.py
Traceback (most recent call last):
File "D:/Python_work/09_类/9.1创建和使用类.py", line 21, in <module>
my_dog = Dog('willie', 6)
TypeError: object() takes no parameters
Process finished with exit code 1
百思不得其解,经过一番查找搜寻,发现问题出在构造函数里的下划线上,init两端都应该是两个下划线,而我只写了一个…
于是改成:
# 创建dog类
class Dog:
"""一次模拟小狗的简单测试"""
def __init__(self, name, age):
"""初始化属性name和age"""
self.name = name
self.age = age
def sit(self):
"""模拟小狗被命令蹲下时"""
print(self.name.title() + " is now sitting.")
def roll_over(self):
"""模拟小狗被命令打滚时"""
print(self.name.title() + " rolled over!")
# 创建一个表示特定小狗的实例
my_dog = Dog('willie', 6)
print("My dog's name is " + my_dog.name.title() + '.')
print("My dog is " + str(my_dog.age) + " years old.")
成功运行!
C:\Users\Tracy\AppData\Local\Programs\Python\Python36\python.exe D:/Python_work/09_类/9.1创建和使用类.py
My dog's name is Willie.
My dog is 6 years old.
Process finished with exit code 0