Die*_*ego 4 python methods class
我试图理解从外部定义时如何调用类的方法.虽然我发现其他线程解决了这个问题,但我没有找到一个非常明确的问题答案,所以我想以简单的形式发布它.
在类之外定义一个函数,并从内部调用它,就像从内部定义它一样.
def my_func(self_class, arg):
do something with arg
return something
class MyClass:
function = my_func
Run Code Online (Sandbox Code Playgroud)
与
class MyClass:
def function(self, arg):
do something with arg
return something
Run Code Online (Sandbox Code Playgroud)
然后将其称为
object = MyClass()
object.function(arg)
Run Code Online (Sandbox Code Playgroud)
先感谢您.
这两个版本是完全等效的(除了第一个版本还引入my_func了全局命名空间,当然,以及您用于第一个参数的不同名称).
请注意,代码中没有"类方法" - 这两种定义都会产生常规(实例)方法.
函数定义导致相同的函数对象,无论它是在类还是模块级别发生.因此,代码的第一个版本中的赋值将函数对象提升到类范围中,并产生与第二个版本完全等效的类范围.