发布网友 发布时间:2022-04-18 17:50
共2个回答
懂视网 时间:2022-04-18 22:11
新手在学习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
热心网友 时间:2022-04-18 19:19
sys.argv获取的到的参数是字符串,应该使用int()或者float()转换成数字形式才能进行减法操作。
根据错误的提示“在str和str之间,无法使用-(减法)”
IMAGE_X1 = sys.argv
IMAGE_Y1 = sys.argv
IMAGE_X2 = sys.argv
IMAGE_Y2 = sys.argv
这4个值应该就是str,但根据代码,应该要是int或float这类才对,可以type一下这四个值,看是不是str,自己手动设一下这四个值,或者强制转换一下IMAGE_X1 = int(sys.argv[2])。
扩展资料:
Str函数,返回代表一数值的 Variant (String)。语法Str(number)必要的 number 参数为一 Long,其中可包含任何有效的数值表达式。说明当一数字转成字符串时,总会在前头保留一空位来表示正负。如果 number 为正,返回的字符串包含一前导空格暗示有一正号。
使用 Format 函数可将数值转成必要的格式,如日期、时间、货币或其他用户自定义格式。与 Str 不同的是,Format 函数不包含前导空格来放置 number 的正负号。注意 Str 函数只视句点 (.) 为有效的小数点。如果使用不同的小数点(例如,国际性的应用程序),可使用 CStr 将数字转成字符串。
参考资料来源:百度百科-str