代码之家  ›  专栏  ›  技术社区  ›  Sturm

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

  •  1
  • Sturm  · 技术社区  · 6 年前

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

    SuperMethod = myObject.SuperMethod
    

    我想知道是否有可能重命名一个对象的每个方法,也就是说,能够调用一个特定对象的每个方法而不显式地告诉它的名称(类似于在VBA中使用 with 条款)

    1 回复  |  直到 6 年前
        1
  •  1
  •   blhsing    6 年前

    您可以更新 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