Python的类中的print函数

时间:2018-03-01 00:18:14

标签: python python-2.x

我无法在类中执行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

为什么会这样?

3 个答案:

答案 0 :(得分:10)

在Python 2中,printkeyword。它只能用于其预期目的。我不能是变量或函数的名称。

在Python 3中,printbuilt-in function,而不是关键字。因此,方法可以使用名称print

如果您使用的是Python 2并希望覆盖其默认行为,则可以从__future__导入Python 3的行为:

from __future__ import print_function
class MyClass:
    def print(self):
        print ('MyClass')

a = MyClass()
a.print()

答案 1 :(得分:8)

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

在Python 2中,print是一个语句,因此print实际上是一个保留字。实际上,当您尝试定义名为print的函数时,会抛出一个SyntaxError ,即:

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

答案 2 :(得分:2)

我在Python 3上尝试过你的代码:

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

a = MyClass()
a.print()

有效!!

输出:

MyClass

按原样运行代码会产生语法错误。由于打印中缺少括号。另请注意,print是Python 2中的保留关键字,但是Python 3中的内置函数。