Rumah  >  Artikel  >  pembangunan bahagian belakang  >  详解python中的TypeError错误解决办法

详解python中的TypeError错误解决办法

高洛峰
高洛峰asal
2017-03-27 16:52:1614389semak imbas

新手在学习python时候,会遇到很多的坑,下面来具体说说其中一个。

在使用python编写面向对象的程序时,新手可能遇到TypeError: this constructor takes no arguments这个错误。

例如下面的程序:

class Ball:
     def _init_(self,color,size,direction):
           self.color=color
           self.size=size
           self.direction=direction

     def bounce(self):
           if self.direction=="down":
                 self.direction="up"

myBall=Ball("red","small","down")
print "I just created a ball."
print "My ball is",myBall.size
print "My ball is",myBall.color
print "My ball's direction is",myBall.direction
print "Now I'm going to bounce the ball"
print
myBall.bounce()
print "Now the ball's direction is",myBall.direction

运行会报错:

======================= RESTART: H:\python\bounce1.py =======================

Traceback (most recent call last):
 File "H:\python\bounce1.py", line 11, in
   myBall=Ball("red","small","down")
TypeError: this constructor takes no arguments

出错原因是,在python中构造函数书写格式是__init__,而不是_init_,即在init两侧都是双下划线,不是单下划线。

修改后如下:

class Ball:
     def __init__(self,color,size,direction):
           self.color=color
           self.size=size
           self.direction=direction

     def bounce(self):
           if self.direction=="down":
                 self.direction="up"

myBall=Ball("red","small","down")
print "I just created a ball."
print "My ball is",myBall.size
print "My ball is",myBall.color
print "My ball's direction is",myBall.direction
print "Now I'm going to bounce the ball"
print
myBall.bounce()
print "Now the ball's direction is",myBall.direction

这是正确的运行结果:

======================= RESTART: H:\python\bounce1.py =======================
I just created a ball.
My ball is small
My ball is red
My ball's direction is down
Now I'm going to bounce the ball

Now the ball's direction is up

Atas ialah kandungan terperinci 详解python中的TypeError错误解决办法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn