gpt4 book ai didi

python - 在 Python 中输入对象命名空间

转载 作者:行者123 更新时间:2023-12-03 19:00:28 26 4
gpt4 key购买 nike

有没有办法输入对象的命名空间,以便我可以像使用全局方法一样使用它的方法?我在想一些使用 with 语句的东西。

class Bar():

def methodA(self):
# do stuff

def methodB(self):
# do more stuff

def __enter__(self):
# somehow enter object namespace / transfer methods into global namespace

def __exit__(self, *args):
# exit object namespace / get rid of globalized methods

foo = Bar()

with foo:
methodA() # all works fine
methodB()

methodA() # throws an error
这只是一个想法,可能根本行不通。或者也许有一个没有 with 语句的解决方案。

最佳答案

这回答了最初的问题,但我建议 不要使用它 .

类似于wKavey的建议方式.
但我不确定我为什么要这样做。
我需要确保没有变量 methodA在全局命名空间中。

class Bar():

def __init__(self, value=5):
self.value = value

def methodA(self):
return self.value

def methodB(self):
return -self.value

def __enter__(self):
global methodA
global methodB
methodA = self.methodA
methodB = self.methodB

def __exit__(self, *args):
global methodA
del methodA
global methodB
del methodB
pass

foo = Bar()

with foo:
print(methodA()) # all works fine
print(methodB())

methodA() # throws an error

关于python - 在 Python 中输入对象命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64958861/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com