可能重复:
Class method differences in Python: bound, unbound and static
class A:
def foo():
print 'hello world'
def foo1(self):
self.foo()
a = A()
a.foo1()
我正在考虑使用一些私有的功能。我认为唯一的办法就是遵循惯例:加上' _'在该函数名称前面,并且仍然将第一个参数设为self
但是foo()
完全没用吗?
答案 0 :(得分:2)
对于所有重要的用途,是的。你可以通过方法的各种属性获得原始函数,但是在类中有类似的东西仍然没什么意义。
>>> A.foo.im_func()
hello world
答案 1 :(得分:0)
尝试拨打A.foo()
。它会输出'hello world'
。
请注意,这只适用于Python 3,因为在Python 2中它会引发TypeError
。
答案 2 :(得分:0)
是的,它几乎没用。在Python 2.x中,调用它而不抛出异常的唯一方法是从类的内部提取函数然后调用它。在Python 3.x中(假设您转换了print
),您可以直接调用A.foo()
。
如果foo()
确实不需要self
参数,则它不需要是一个方法:只需在与定义类相同的模块中使其成为函数。