如何使用其完全限定名称调用Python方法?

时间:2017-08-30 11:28:56

标签: python methods module invoke

在Java中,我可以通过引用其完全限定名称来调用类或方法而无需导入它:

public class Example {
    void example() {

        //Use BigDecimal without importing it
        new java.math.BigDecimal(1);
    }
}

类似的语法显然不能使用Python:

class Example:
    def example(self):

        # Fails
        print(os.getcwd())

良好的做法和PEP建议除了,我可以在Python中做同样的事情吗?

3 个答案:

答案 0 :(得分:2)

没有。如果要在Python中使用模块,则必须将其名称显式导入范围。而且,正如@AlexHall所提到的,在导入时间之前,不存在类/函数/模块。没有import - 没有办法访问它。但是在我看来,这会产生更好,更明确的代码。这会强制您在导入模块名称时显式。

答案 1 :(得分:2)

函数在其定义运行之前不存在,这意味着它运行的模块,意味着导入模块(除非它是您直接运行的脚本)。

我能想到的最接近的是print(__import__('os').getcwd())

答案 2 :(得分:1)

我不确定您是否可以完全相同,但您只能导入该功能:

from foo.bar import baz as baz_fn

baz_fn()

其中foo.bar是包含该函数的模块的完全限定名称,baz是您要导入的函数的名称。它会将其导入为名称baz_fn