0

可能重复:
Python 中的类方法差异:绑定、未绑定和静态

class A:
    def foo():
        print 'hello world'
    def foo1(self):
        self.foo()

a = A()
a.foo1()

我正在考虑使用该类私有的一些功能。我想唯一的方法是按照约定:在该函数名前面添加一个 '_' 前缀,并且仍然将第一个参数作为self

但是foo()完全没用吗?

4

3 回答 3

2

对于所有重要的用途,是的。您可以通过方法上的各种属性获取原始函数,但在类中包含类似的东西仍然没有什么意义。

>>> A.foo.im_func()
hello world
于 2013-01-03T09:05:45.217 回答
0

尝试调用A.foo(). 它会输出'hello world'.

请注意,这仅适用于 Python 3,因为在 Python 2 中它会引发TypeError.

于 2013-01-03T09:04:39.677 回答
0

是的,它几乎没用。在 Python 2.x 中,调用它而不抛出异常的唯一方法是从类的内部提取函数,然后调用它。在 Python 3.x 中(假设您转换了print),您可以A.foo()直接调用。

如果foo()真的不需要self参数,那么它就不需要是一个方法:只需让它成为与定义类相同的模块中的函数。

于 2013-01-03T09:06:39.420 回答