首页 > 解决方案 > 代码是什么意思------“self(img,scale)”

问题描述

在一个类的定义中,有代码——“self(parameters)” 我认为self是类的重点,但代码就像一个函数。我的问题是如何理解 python 类中的“self()”

roi_cls_loc, roi_scores, rois, _ = self(img, scale=scale)

标签: python-3.x

解决方案


看起来该类是实现该功能的类函数类(有时也称为“仿函数”)__call__。您可以像使用函数一样使用此类的对象:

class Foo:
    def __call__(self):
        print("__call__");

obj = Foo();
obj();

如果你想从一个方法中做到这一点,你可以使用self

class Foo:
    def function(self):
        self();

    def __call__(self):
        print("CALL");

obj = Foo();
obj.function();

代替self();你也可以写self.__call__();,但这不那么可读,所以大多数人更喜欢self();.


推荐阅读