重命名跳过对象名称的每个方法

时间:2018-08-31 08:54:11

标签: python

不确定这是一个有效的问题还是胡说八道,但我没有在线找到答案。

我知道可以用以下方式在Python中重命名函数:

SuperMethod = myObject.SuperMethod

我想知道是否可以重命名对象的每个方法,仅此而已,就能够调用特定对象的每个方法而无需明确告知其名称(类似于在VBA中使用with条款)

我知道这会遇到各种各样的命名问题。

1 个答案:

答案 0 :(得分:1)

在过滤掉以globals()开头和结尾的内部方法之后,可以使用对象的可调用对象来更新'__'字典:

class A:
    def __init__(self, i):
        self.i = i
    def x(self):
        print(self.i + 1)
    def y(self):
        print(self.i + 2)
myObject = A(1)
globals().update({k: getattr(myObject, k) for k, v in A.__dict__.items() if not k.startswith('__') and not k.endswith('__') and callable(v)})
x()
y()

这将输出:

2
3