在Python类之外定义类方法

时间:2012-07-20 15:32:11

标签: python class methods

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

在类之外定义一个函数,并从内部调用它,就像从内部定义它一样。

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)

提前谢谢你。

1 个答案:

答案 0 :(得分:9)

这两个版本是完全等效的(除了第一个版本还将my_func引入全局命名空间,当然,还有用于第一个参数的不同名称。)

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

函数定义导致相同的函数对象,无论它是在类还是模块级别发生。因此,代码的第一个版本中的赋值将函数对象提升到类范围中,并导致与第二个版本完全等效的类范围。