繁体   English   中英

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

[英]Using print as class method name in Python

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

$ cat a.py

import sys
class A:
    def print(self):
        sys.stdout.write("I'm A\n")
a = A()
a.print()

$ python a.py

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");
}

当打印从语句更改为函数时,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方法是不寻常的。 更多pythonic是从__str__方法返回一个值,该方法自定义实例在打印时的显示方式。

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

print是Python 2.x中的保留字,因此您不能将其用作标识符。 以下是Python中保留字的列表: https : //docs.python.org/2.5/ref/keywords.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM