Python 为什么不能在同一行上定义类和函数?

Python 为什么不能在同一行上定义类和函数?,python,indentation,Python,Indentation,出于某种原因,不可能定义这样的方法: class X:def y():pass #Results in a SyntaxError 但您可以在同一行定义方法和内容: def y():print("It works!") 为什么第二个示例有效而第一个示例无效?对于单行复合语句,主体必须是: 它不能是复合语句。这将为太多混乱和模棱两可的语法打开大门。比如说, if True: if False: pass else: print('Which "if" does this "else" go w

出于某种原因,不可能定义这样的方法:

class X:def y():pass #Results in a SyntaxError
但您可以在同一行定义方法和内容:

def y():print("It works!")

为什么第二个示例有效而第一个示例无效?

对于单行复合语句,主体必须是:

它不能是复合语句。这将为太多混乱和模棱两可的语法打开大门。比如说,

if True: if False: pass
else: print('Which "if" does this "else" go with?')

对于单行复合语句,主体必须是:

它不能是复合语句。这将为太多混乱和模棱两可的语法打开大门。比如说,

if True: if False: pass
else: print('Which "if" does this "else" go with?')

可能与第二个冒号有关。类Testobject:print'yay'起作用:您还可以看到defy:defz:pass也失败了,因此它不是特定于成对的类和函数的。可能与第二个冒号有关。类Testobject:print'yay'起作用:您还可以看到defy:defz:pass也失败了,因此它不是特定于类和函数的。