Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python';类中的s print函数_Python_Python 2.x - Fatal编程技术网

Python';类中的s print函数

Python';类中的s print函数,python,python-2.x,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 为什么会发生这种情况?在Python2中,print是

我无法在类中执行
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
是一个很好的例子。它只能用于其预期目的。我不能是变量或函数的名称

在Python3中,
print
是一个关键字,而不是一个关键字。例如,方法的名称可以是
print

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

您正在使用Python2(除非您有很好的理由,否则您确实不应该这样做)


在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 3上尝试了您的代码,如下所示:

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

a = MyClass()
a.print()
成功了

输出:

MyClass

按原样运行代码会导致语法错误。因为打印中缺少括号。另外,请注意,print在Python 2中是一个保留关键字,但在Python 3中是一个内置函数。

@erip它可能是(在Python 2中)。print是一个保留字(至少在Python 2中)。您使用的是Python 2的哪个版本?这个错误令人惊讶。我本以为Python2会在
def print(self)
上投诉,因为
print
是一个保留字,而Python3会在
print'MyClass'
上投诉,因为Python3
print
是一个函数。@juanpa.arrivillaga-我刚刚安装了2.7.12(旁白:rocks),第5行出现语法错误,
def print(self):
,如预期。我不相信OP的代码会得到OP的错误消息。在Python 3.5.2上,即使没有来自uuu future_uuu导入print_函数的
,它也能工作。希望我最近的编辑能让这一点更清楚。
class MyClass:
    def print(self):
        print ('MyClass')

a = MyClass()
a.print()
MyClass