为什么我不能把课留空

时间:2013-05-26 06:46:11

标签: python class

当我删除'pass'命令并将该类留空时,它会显示错误:

File "class_distance.py", line 6
    point1=distance()   
         ^
IndentationError: expected an indented block

预计代码会计算两点之间的距离。 这是代码:

import math 
class distance(object):
     pass


point1=distance()   
point2=distance()
point1.x=input("x=")
point2.x=input("x=")
point1.y=input("y=")
point2.y=input("y=")


def main(point1,point2):


    dx = point1.x - point2.x
    dy = point1.y - point2.y
    dist = math.sqrt(dx**2 + dy**2)
    print dist

main(point1,point2)

4 个答案:

答案 0 :(得分:4)

当您使用冒号结束一行时,您将声明一个复合语句:Python期望该语句后面有一段代码。 pass关键字表示您不想进入该区块。

由于Python中空格的重要性,不允许使用空语句使代码更易读,更易于解析:冒号后,预计会出现缩进块,如果没有,则表示错误,故事结束。

编辑:顺便说一句,如果你想知道,你会在下一个语句中获得IndentationError,而不是class声明,因为Python认为是类声明的主体,并期望它正确缩进。

答案 1 :(得分:2)

这是因为Python看到了

后的类体
class distance(object):

特别是结肠信号我们将缩进下一行并输入类的主体。但是如果我们不缩进并且我们继续编程,那么Python会感到不安并且抱怨我们已经跳过了这个类体。

为了允许空块,有一个关键字pass,它基本上充当了一个占位符,用于表示类或函数或其他通常的位置。

class distance(object):
    pass # Let's python know we didn't forget the class body
keep.on.programming()

答案 2 :(得分:0)

课程必须有一个正文。因此,当你删除pass时,它会将下一个语句作为body进行搜索,但由于它与你的类定​​义位于同一级别,因此Python说有一个IndentationError。

答案 3 :(得分:0)

python中的代码块必须包含一些代码,所以如果你不想让它做任何事情,你必须放入pass。因此IndentationError