python - 如何访问类中的方法?
问题描述
环境: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__
解决方案
我想你在寻找,
super().__repr__()
class A:
# original_repr = ?__repr__
def __init__(self, switch):
self.switch = switch
def __repr__(self):
return super().__repr__()
推荐阅读
- excel - 使用 VBA 从源代码中提取 href 链接
- java - 使用 spock 对 Spring Cloud Gateway 过滤器进行单元测试
- asp.net - 无法为 '.NETCoreApp,Version=v3.0' 解析 'Microsoft.EntityFrameworkCore.SqlServer (>= 3.0.0)'
- android - 我的应用程序崩溃没有错误,Android Studio
- sql - Oracle 12c - 从字符串中提取日期并获取 No.of.Days 的差异
- python - Python pandas 存储数据集的最佳方式
- qt - Qt 5.12:在“/usr/include/libdrm”中找不到“GL/gl.h”
- css - 非选择器:如何在 WordPress 中使用 :not() 排除单个页面的 CSS 自定义?
- uml - 如何表示在重写方法中调用基类方法?
- android - Kotlin 从嵌套的 forEach 返回@forEach