在 Python 中使用 print 作为 class 方法名称
Using print as class method name in Python
是否 Python 不允许在 class 方法名称中使用 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 中,当 print 从语句更改为函数时,限制消失了。事实上,您可以在 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 class 定义 print
方法是不常见的。 More pythonic 是 return 来自 __str__
方法的一个值,它自定义实例在打印时的显示方式。
>>> class A(object):
... def __str__(self):
... return "I'm A"
...
>>> a = A()
>>> print(a)
I'm A
print是Python2.x中的保留字,不能作为标识符使用。以下是 Python 中的保留字列表:https://docs.python.org/2.5/ref/keywords.html.
是否 Python 不允许在 class 方法名称中使用 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 中,当 print 从语句更改为函数时,限制消失了。事实上,您可以在 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 class 定义 print
方法是不常见的。 More pythonic 是 return 来自 __str__
方法的一个值,它自定义实例在打印时的显示方式。
>>> class A(object):
... def __str__(self):
... return "I'm A"
...
>>> a = A()
>>> print(a)
I'm A
print是Python2.x中的保留字,不能作为标识符使用。以下是 Python 中的保留字列表:https://docs.python.org/2.5/ref/keywords.html.