python - 基类方法的动态更新
问题描述
让类 DivStr 基于类 str。
class DivStr(str):
def init(self, val):
self.str_val = val
在 str 中有许多方法,但它们都返回字符串类型。我该怎么做才能使所有基本字符串方法像在字符串类中一样工作,但要让它们返回 DivStr 类。
例如,如果我从字符串“abs”调用lower,我将得到字符串“ABC”。我需要获取 DivStr("ABC")。所有 str 方法都应该没问题。我只听说过 exec 我可以在其中做类似的事情
exec("def " + fun + "(*args): return DivStr(function(\"" + fun + "\", *args)"))
但我不知道如何遍历所有 str 可调用方法以及如何添加它们。
解决方案
您可以使用dir()
提取类属性的名称,getattr()
获取实际属性并callable()
隔离实际是方法的属性,例如:
for attr_name in dir(my_class):
attr = getattr(my_class, attr_name)
if callable(attr):
...
请注意,exec()
与上述结合使用可能被认为是不好的做法。
推荐阅读
- javascript - 如何在反应原生的一个redux中添加多个计数器
- input - 为什么 Nyr OpenVPN 安装脚本需要“read -N 999999 -t 0.001”?
- javascript - 为什么当用户提交输入时我的 html 选择选项不更新?
- javascript - Expo OTA 更新是否适用于新库?
- javascript - 从 for 循环内函数的输出创建一个数组
- npm - 纱线因节点 gyp 错误而失败
- c# - UnityEngine.UI.Text 没有在异步方法中更新
- javascript - TypeError:null 不是对象(评估'_this2.emailRef.current.focus - 如何在打开屏幕时自动聚焦输入字段
- python - TypeError:'bool' 对象在 Python3 中不可下标,odoo
- acumatica - 如何在 Acumatica 报表设计器中将属性设置为参数?