我试图理解在从外部定义类时如何调用类的方法。虽然我发现其他线程解决了这个问题,但我没有找到一个非常明确的问题答案,所以我想以简单的形式发布它。
在类之外定义一个函数,并从内部调用它,就像从内部定义它一样。
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)
提前谢谢你。
答案 0 :(得分:9)
这两个版本是完全等效的(除了第一个版本还将my_func
引入全局命名空间,当然,还有用于第一个参数的不同名称。)
请注意,代码中没有“类方法” - 这两种定义都会产生常规(实例)方法。
函数定义导致相同的函数对象,无论它是在类还是模块级别发生。因此,代码的第一个版本中的赋值将函数对象提升到类范围中,并导致与第二个版本完全等效的类范围。