Python的类中的print函数

Tig*_*.ru 4 python python-2.x

我无法print在类中执行函数:

#!/usr/bin/python
import sys

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

a = MyClass()
a.print()
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

File "./start.py", line 9
    a.print()
          ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

Rob*_*obᵩ 10

在Python 2中,print是一个关键字.它只能用于其预期目的.我不能是变量或函数的名称.

在Python 3中,print是一个内置函数,而不是关键字.因此,例如,方法可以具有名称print.

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

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

a = MyClass()
a.print()
Run Code Online (Sandbox Code Playgroud)


jua*_*aga 8

您正在使用Python 2(除非您有充分的理由,否则您不应该使用它).

在Python 2中,print是一个语句,所以print实际上是一个保留字.实际上,当您尝试使用名称定义函数时,应该抛出SyntaxError print,即:

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
Run Code Online (Sandbox Code Playgroud)

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

请注意,在Python 3中:

>>> class A:
...    def print(self):
...       print('A')
...
>>> A().print()
A
Run Code Online (Sandbox Code Playgroud)