在Python中使用print作为类方法名

在Python中使用print作为类方法名,python,printing,reserved,Python,Printing,Reserved,Python是否禁止在类方法名中使用打印(或其他保留字) $cat a.py import sys class A: def print(self): sys.stdout.write("I'm A\n") a = A() a.print() File "a.py", line 3 def print(self): ^ SyntaxError: invalid syntax $python a.py import sys class A:

Python是否禁止在类方法名中使用
打印
(或其他保留字)

$cat a.py

import sys
class A:
    def print(self):
        sys.stdout.write("I'm A\n")
a = A()
a.print()
File "a.py", line 3
  def print(self):
          ^
  SyntaxError: invalid syntax
$python a.py

import sys
class A:
    def print(self):
        sys.stdout.write("I'm A\n")
a = A()
a.print()
File "a.py", line 3
  def print(self):
          ^
  SyntaxError: invalid syntax
print
更改为其他名称(例如,
aprint
)不会产生错误。如果有这样的限制,我感到惊讶。在C++或其他语言中,这不会是个问题:

#include<iostream>
#include<string>
using namespace std;

class A {
  public:
    void printf(string s)
    {
      cout << s << endl;
    }
};


int main()
{
  A a;
  a.printf("I'm A");
}
#包括
#包括
使用名称空间std;
甲级{
公众:
void printf(字符串s)
{

cout当print从语句更改为函数时,Python 3中的限制消失了。事实上,您可以通过将来的导入在Python 2中获得新的行为:

>>> from __future__ import print_function
>>> import sys
>>> class A(object):
...     def print(self):
...         sys.stdout.write("I'm A\n")
...     
>>> a = A()
>>> a.print()
I'm A
作为样式说明,python类定义
print
方法是不常见的。更具python风格的是从
\uuu str\uuu
方法返回一个值,该方法自定义实例在打印时的显示方式

>>> class A(object):
...     def __str__(self):
...         return "I'm A"
...     
>>> a = A()
>>> print(a)
I'm A

<强>打印< <强>是Python 2。x中的保留字,因此不能用它作为标识符。这里是Python中保留字的列表:.c/p> > C++ >代码> Prtff<代码>不是保留字。尝试命名方法<代码> int >代码>,您会发现C++不允许它,但Python允许它,因为它不是Python中的保留字。