我无法在类中执行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
为什么会这样?
答案 0 :(得分:10)
在Python 2中,print
是keyword。它只能用于其预期目的。我不能是变量或函数的名称。
在Python 3中,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()
答案 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中的内置函数。