对不起有些不清楚的问题。我实际上想知道,当你迭代地调用类的方法时,Python中是否有可能不提类名?我的意思是写而不是:
SomeClass.Fun1()
SomeClass.Fun2()
...
SomeClass.Fun100()
类似的东西:
DoWith SomeClass:
Fun1()
Fun2()
...
Fun100()
答案 0 :(得分:3)
有几种方法可以实现这一点(from SomeClass import *
,locals().update(SomeClass.__dict__())
),但你所尝试的并不合乎逻辑:
在90%的情况下,您不是在调用静态类方法,而是需要一个实例来操作的成员函数。您确实意识到第一个,您通常在方法上看到的self
参数很重要,因为它允许您访问实例的命名空间。因此,即使在方法中,您也使用self.my_member
代替my_member
。这是一个重要的python概念,你不应该试图避免它 - 本地名称空间和实例的属性之间存在差异。
然而,你可以做的是拥有一个简短的句柄,没有任何开销:
my_instance = SomeClass() #notice, this is an instance of SomeClass, not the class or type itself
__ = my_instance
可以为您节省大量的打字费用。但是我更喜欢清晰地保存打字输入(地狱,vim
有很好的Python自动完成插件)。
答案 1 :(得分:1)
是的,只需尝试from SomeClass import *
(当然将SomeClass移动到其他文件后)