可能重复:
Python 中的类方法差异:绑定、未绑定和静态
class A:
def foo():
print 'hello world'
def foo1(self):
self.foo()
a = A()
a.foo1()
我正在考虑使用该类私有的一些功能。我想唯一的方法是按照约定:在该函数名前面添加一个 '_' 前缀,并且仍然将第一个参数作为self
但是foo()
完全没用吗?
可能重复:
Python 中的类方法差异:绑定、未绑定和静态
class A:
def foo():
print 'hello world'
def foo1(self):
self.foo()
a = A()
a.foo1()
我正在考虑使用该类私有的一些功能。我想唯一的方法是按照约定:在该函数名前面添加一个 '_' 前缀,并且仍然将第一个参数作为self
但是foo()
完全没用吗?
对于所有重要的用途,是的。您可以通过方法上的各种属性获取原始函数,但在类中包含类似的东西仍然没有什么意义。
>>> A.foo.im_func()
hello world
尝试调用A.foo()
. 它会输出'hello world'
.
请注意,这仅适用于 Python 3,因为在 Python 2 中它会引发TypeError
.
是的,它几乎没用。在 Python 2.x 中,调用它而不抛出异常的唯一方法是从类的内部提取函数,然后调用它。在 Python 3.x 中(假设您转换了print
),您可以A.foo()
直接调用。
如果foo()
真的不需要self
参数,那么它就不需要是一个方法:只需让它成为与定义类相同的模块中的函数。