Python-__getattr__在模块上

Python-__getattr__在模块上,第1张

Python-__getattr__在模块

你在这里遇到两个基本问题:

  1. __xxx__
    方法只在类上查找
  2. TypeError: can't set attributes of built-in/extension type 'module'

    (1)意味着任何解决方案还必须跟踪正在检查的模块,否则每个模块将具有实例替换行为;(2)表示(1)甚至是不可能的……至少不是直接的。

幸运的是,

sys.modules
对那里发生的事情并不挑剔,因此可以使用包装器,但是只能用于模块访问(即
import somemodule; somemodule.salutation('world')
,对于同模块访问,你几乎必须从替换类中提取方法并将其添加到
globals()eiher
中。类上的自定义方法(我喜欢使用
.export()
)或泛型函数(例如已经列出的答案)要记住的一件事:如果包装器每次都在创建一个新实例,而全局解决方案不是,最终,你会得到完全不同的行为。哦,你不能同时使用两者-一种是另一种。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5021533.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存