首页 > 解决方案 > 如何访问类中的方法?

问题描述

环境:Python 2.7(可能相关)。

例如,我想__repr__根据是否设置了实例上的属性来调用类原始方法。

class A(object):
    # original_repr = ?__repr__

    def __init__(self, switch):
        self.switch = switch

    def __repr__(self):
        if self.switch:
            return self._repr()
        else:
            # return saved original __repr__ method.


def custom_repr(self):
    pass

a = A()
a._repr = MethodType( custom_repr, a, A)

如何保存__repr__类的方法?

显然我不能self在一个实例中使用 like 。

也不能使用A.__repr__,因为A当时没有定义它自己。

编辑:有人建议使用super().__repr__,但是,我在代码中对其进行了测试:

class C(object):
    pass

class D(object):
    def __repr__(self):
        return super(self.__class__).__repr__()

c = C()
d = D()

# repr(c) --> '<__main__.C object at 0x0000000003AEFBE0>'
# repr(d) --> "<super: <class 'D'>, NULL>"

你可以看到super().__repr__和原来的不一样__repr__

标签: pythonpython-2.7class

解决方案


我想你在寻找,

super().__repr__()


class A:
    # original_repr = ?__repr__

    def __init__(self, switch):
        self.switch = switch

    def __repr__(self):
        return super().__repr__()

推荐阅读