4

我试图了解从外部定义时如何调用该类的方法。虽然我找到了其他线程来解决这个问题,但我还没有找到一个非常明确的答案来回答我的问题,所以我想以一种简单的形式发布它。

在类外部定义函数并从内部调用它与从内部定义它相同。

def my_func(self_class, arg):
    do something with arg
    return something

class MyClass:
    function = my_func

相对

class MyClass:
    def function(self, arg):
        do something with arg
        return something

然后将其称为

object = MyClass()
object.function(arg)

先感谢您。

4

1 回答 1

9

这两个版本是完全等价的(除了第一个版本也引入my_func了全局命名空间,当然,以及您用于第一个参数的不同名称)。

请注意,您的代码中没有“类方法”——这两个定义都会产生常规(实例)方法。

A function definition results in the same function object regardless of whether it occurs at class or module level. Therefore, the assignment in the first version of the code lifts the function object into the class scope, and results in a completely equivalent class scope as the second version.

于 2012-07-20T15:34:15.523 回答