您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

您可以在Python的核心类型上使用猴子补丁方法吗?

您可以在Python的核心类型上使用猴子补丁方法吗?

在这里所说的猴子补丁到底是什么意思?有几个略有不同的定义

如果您的意思是“您可以在运行时更改类的方法吗?”,那么答案很明显是:

class Foo:
  pass # dummy class

Foo.bar = lambda self: 42

x = Foo()
print x.bar()

如果您的意思是,“您可以在运行时更改类的方法,并 更改该类的 吗?” 那么答案也是。只需稍微更改顺序即可:

class Foo:
  pass # dummy class

x = Foo()

Foo.bar = lambda self: 42

print x.bar()

但是您不能对某些内置类(例如int或)执行此操作float。这些类的方法在C中实现,并且为了使实现更容易,更有效而牺牲了某些抽象。

我不清楚您 仍要更改内置数字类的行为。如果您需要更改其行为,请对其进行子类化!!

python 2022/1/1 18:33:55 有402人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶