【问题标题】:defining class methods outside of the class Python在 Python 类之外定义类方法
【发布时间】:2012-07-20 15:32:10
【问题描述】:

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

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

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)

提前谢谢你。

【问题讨论】:

  • 这些不是类方法,它们是实例方法。你可以对类本身做类似的事情来添加类方法,就像你可以对一个实例添加实例方法到一个实例一样。

标签: python class methods


【解决方案1】:

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

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

无论是在类还是模块级别,函数定义都会产生相同的函数对象。因此,第一版代码中的赋值将函数对象提升到类作用域,并产生与第二版完全等价的类作用域。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    相关资源
    最近更新 更多