zoukankan      html  css  js  c++  java
  • python中的TypeError错误解决办法

    新手在学习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:pythonounce1.py =======================
    
    Traceback (most recent call last):
      File "H:pythonounce1.py", line 11, in <module>
        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:pythonounce1.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
  • 相关阅读:
    Asp.Net Core 项目从 1.0.1 升级到 1.1.0 的小补丁
    C# 正则表达式小坑 -- not enough
    RK 61 键盘 Ubuntu 下键位映射修改方案
    编程急转弯
    ASP.NET Core 使用 AutoFac 注入 DbContext
    分享一个微软风格的博客园主题
    EntityFramework Core 学习笔记 —— 添加主键约束
    NYOJ 69 数的长度(数学)
    NYOJ 67 三角形面积(线代,数学)
    NYOJ 66 分数拆分
  • 原文地址:https://www.cnblogs.com/lingan-hong/p/6260014.html
Copyright © 2011-2022 走看看