我们可以在这个python类声明中调用foo吗?

时间:2013-01-03 09:01:42

标签: python class methods

  

可能重复:
  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()完全没用吗?

3 个答案:

答案 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参数,则它不需要是一个方法:只需在与定义类相同的模块中使其成为函数。