python导入嵌套类

时间:2016-04-09 09:10:42

标签: python import nested

我是python的新手。这不是我的案例,只是我对导入嵌套类的好奇心。

所以我有一个main.py和test.py.

test.py:

class one():
   class two():
      def twodef():
         pass

所以在我的main.py中,我可以'import test''from test import one'。但是我做错了:'from test.one import two'。

error : ImportError: No module named one

任何人都可以解释这个吗?

3 个答案:

答案 0 :(得分:2)

对于模块全局范围中存在的名称,您只能from module import name - 基本上是在顶级模块代码中定义的名称。在较低级别范围中定义的名称(例如,在示例中的类中)是不可导入的。您需要导入包含该名称的对象,并从那里访问它。

from test import one
my_two = one.two()

答案 1 :(得分:0)

您可以执行以下操作:

from test import one

two_object = one.two()
two_object.twodef()

答案 2 :(得分:-1)

在test.py

class One:
    class Two:
        @staticmethod
        def twodef():
          print("twodef")

我的主要逻辑:

from test import One
two_obj = One.Two
two_obj.twodef()

删除类定义末尾的括号。

编码标准:

始终在上层驼峰案例中声明您的类名(第一类=>第一类)。

For more about scope

<强>偏爱:

如果你在python文件中有一个类,那么总是在该类名中命名该文件,但是在较低的camel情况下。 (test.py =&gt; one.py)。我之前认为这是一个标准,但它似乎广泛实践。我会使用这个因为,如果然后项目大小增加,如果你最终有很多类和模块,它是合乎逻辑且易于访问的,而不是访问模块来查找类名。 Ref1  Ref2