python类的用法,而对于python -c'...'没有换行符?

fer*_*arr 0 python

在Python中定义类时,为什么类用法需要换行?尝试从字符串(python -c '....')运行python程序时,这有点烦人,因为我无法在同一行上定义和使用该类。有没有办法做到这一点?

例如,以下失败:

$ cat class_play.py
class ClassA(): pass; a = 3; print(a); print(ClassA)
$ class ClassA(): pass; a = 3; print(a); print(ClassA)
$ python class_play.py
3
Traceback (most recent call last):
  File "class_play.py", line 1, in <module>
    class ClassA(): pass; a = 3; print(a); print(ClassA)
  File "class_play.py", line 1, in ClassA
    class ClassA(): pass; a = 3; print(a); print(ClassA)
NameError: name 'ClassA' is not defined
Run Code Online (Sandbox Code Playgroud)

但是在换行中使用该类可以:

$ cat class_play.py
class ClassA(): pass; a = 3; print(a);
print(ClassA)
$ python class_play.py
3
<class '__main__.ClassA'>
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 7

使用换行符,命令行不仅限于一行:

python -c "
class Foo:
    pass
print(Foo())
"
Run Code Online (Sandbox Code Playgroud)

或者只是字符串中插入\n序列$'...'

python -c $'class Foo:\n    pass\nprint(Foo())'
Run Code Online (Sandbox Code Playgroud)

使用分号,您只能添加更多简单的语句,并且如果您以一个开始,则它们都属于同一复合语句。您不能使用这些来定义方法或期望class语句已完成,而您仍在class定义中