【发布时间】:2018-12-26 23:31:20
【问题描述】:
在 JS 中,您可以执行类似的操作,将对象/dict、obj 的所有键、值分配到全局命名空间/上下文 obj 中并使用 this[key] = obj[key]
我希望能够做到这一点
class A:
def call(self):
print('a')
a = A()
globals()['call'] = lambda: None
print(globals())
setattr(globals(), 'call', a.call)
令人困惑的是,我得到的错误是 AttributeError: 'dict' object has no attribute 'call'
,即使我在打印 globals() 时明确定义了调用
【问题讨论】:
-
属性和键在 Python 中不是一回事。
-
你为什么还要乱用
globalsdict呢?为什么不call = a.call??? -
@juanpa.arrivillaga 用于当我决定将 7 个以上的函数移动到一个类时,但我懒得重构,我可能会在开发这个时将更多的函数移入或移出这个类脚本;是的,这是糟糕的设计,我的 IDE 会认为我正在尝试使用一些不是 def 的 var
标签: python setattribute global