No puedo ejecutar la función print en la clase:

#!/usr/bin/python
import sys

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

a = MyClass()
a.print()

Estoy recibiendo el siguiente error:

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

Por que esta sucediendo?

4
TigerTV.ru 1 mar. 2018 a las 03:18

3 respuestas

La mejor respuesta

En Python 2, print es una palabra clave. Solo se puede usar para el fin previsto. No puedo ser el nombre de una variable o una función.

En Python 3, print es una función incorporada , no es una palabra clave. Entonces, los métodos, por ejemplo, pueden tener el nombre print.

Si está utilizando Python 2 y desea anular su comportamiento predeterminado, puede importar el comportamiento de Python 3 desde __future__:

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

a = MyClass()
a.print()
10
Robᵩ 1 mar. 2018 a las 05:39

Probé tu código en Python 3 así:

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

a = MyClass()
a.print()

Funcionó !!

Salida:

MyClass

Ejecutar su código como está me da un error de sintaxis. Debido a la falta de paréntesis en la impresión. Además, tenga en cuenta que print es una palabra clave reservada en Python 2 pero una función incorporada en Python 3.

2
Ankit Malik 1 mar. 2018 a las 00:26

Estás utilizando Python 2 (que realmente no deberías, a menos que tengas una muy buena razón).

En Python 2, print es una declaración, por lo que print es en realidad una palabra reservada. De hecho, un SyntaxError debería haber sido arrojado cuando intentó definir una función con el nombre print, es decir:

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

Entonces, tengo curiosidad sobre qué versión exacta de Python 2 está utilizando. el resultado anterior fue de una sesión Python 2.7.13 ...

Entonces tenga en cuenta, en Python 3:

>>> class A:
...    def print(self):
...       print('A')
...
>>> A().print()
A
8
juanpa.arrivillaga 1 mar. 2018 a las 00:21