Python 在 class 中的打印功能

Python's print function in a class

我无法在 class:

中执行 print 函数
#!/usr/bin/python
import sys

class MyClass:
    def print(self):
        print 'MyClass'

a = MyClass()
a.print()

我收到以下错误:

File "./start.py", line 9
    a.print()
          ^
SyntaxError: invalid syntax

为什么会这样?

在Python2中,print是一个keyword。它只能用于其预期目的。我不能是变量名或函数名。

在Python3中,print是一个built-in function,不是关键字。例如,方法的名称可以是 print.

如果您正在使用 Python 2 并想覆盖其默认行为,您可以从 __future__:

导入 Python 3 的行为
from __future__ import print_function
class MyClass:
    def print(self):
        print ('MyClass')

a = MyClass()
a.print()

您正在使用 Python 2(您确实不应该这样做,除非您有充分的理由)。

在Python2中,print是一个语句,所以print其实是一个保留字。实际上,当您尝试定义名称为 print 的函数时,会抛出 SyntaxError should,即:

In [1]: class MyClass:
   ...:     def print(self):
   ...:         print 'MyClass'
   ...:
   ...: a = MyClass()
   ...: a.print()
  File "<ipython-input-1-15822827e600>", line 2
    def print(self):
            ^
SyntaxError: invalid syntax

所以,我很好奇您使用的 Python 2 的确切版本。以上输出来自 Python 2.7.13 会话...

所以请注意,在 Python 3:

>>> class A:
...    def print(self):
...       print('A')
...
>>> A().print()
A

我在 Python 3 上试过你的代码是这样的:

class MyClass:
    def print(self):
        print ('MyClass')

a = MyClass()
a.print()

成功了!!

输出:

MyClass

运行 你的代码给我语法错误。因为在印刷中缺少括号。另外,请注意 print 在 Python 2 中是保留关键字,但在 Python 3.

中是 built-in-function