将类的所有属性和方法导入python中的当前作用域

将类的所有属性和方法导入python中的当前作用域,python,Python,我想从本地定义的类实例导入属性和方法,如下所示: from myClassInstance import * 一个动机是:当我从脚本转换到类时,事情会变得多么丑陋: 我需要用hs作为所有这些属性和方法的前缀。看起来。。但是有没有办法将所有这些属性导入到当前名称空间中?我在问它是否可能(如果它被认为是蟒蛇的话,我就不那么感兴趣了。) 更新虽然在更大的问题(将脚本转换为单元可测试类)下选择/授予了答案,但没有成功。对于一个小任务来说,重构的数量太多了。在这一点上,我必须坚持使用单片脚本。也许接下

我想从本地定义的类实例导入属性和方法,如下所示:

from myClassInstance import *
一个动机是:当我从脚本转换到类时,事情会变得多么丑陋:

我需要用
hs作为所有这些属性和方法的前缀。
看起来。。但是有没有办法将所有这些属性导入到当前名称空间中?我在问它是否可能(如果它被认为是蟒蛇的话,我就不那么感兴趣了。)

更新虽然在更大的问题(将脚本转换为单元可测试类)下选择/授予了答案,但没有成功。对于一个小任务来说,重构的数量太多了。在这一点上,我必须坚持使用单片脚本。也许接下来我会问一个问题,关于如何将脚本整体转换为基于单元可测试类的方法,而不必费劲。

这是一个非常糟糕的黑客行为,你永远不应该这样做。 您可以从这样的对象模拟导入。但是请不要

class SomeClass(object):

    def method1(self):
        print(1)

    def method2(self):
        print(2)



if __name__ == '__main__':

    s = SomeClass()
    for a in dir(s):
        if callable(getattr(s, a)):
            globals()[a] = getattr(s, a)
    method1()
输出:

1

请使用代码布局而不是图像。@DivyanshuSrivastava我这样做是为了显示有多少地方受到影响(红色…)Python甚至在方法中没有隐式的
this
指针-这是一个设计选择(就我而言是一个非常明智的选择),所以显然它不支持这样的“功能”这不回答你的问题,但是你可以考虑另一种设计,其中HAMSPAM是一个模块而不是一个类。然后,
import*
机制将很好地工作。@Kevin这实际上是一个值得的答案(可以随意添加):提供了一种解决问题意义的方法。您添加了强制性的“hack”。。“永远不要这样做”,以免被蟒蛇咬到……这绝对不是你想投入生产的明智之举。但我只是想证明这是可能的。Python为您提供了所有的工具。为了添加单元测试,我尝试将一个脚本转换为一个类,然后所有的东西都左右颠倒,需要进行大量的重构。进行单元测试是为生产做准备的本质,但是转换成本太高,我犹豫了。我可以向您保证,我并不是唯一一个希望将代码保存在脚本中而不是类中的人,因为这样会带来巨大的开销和较低的可读性:我与那些只定期使用python的人一起工作,在他们的代码中看到相对较少的类,而不是单片脚本。这确实完成了工作,但IDE不知道动态导入的范围由于这些方法是在运行时注入全局范围的,所以IDE不会知道它们