python导入嵌套类

python导入嵌套类,python,import,nested,Python,Import,Nested,我是python新手。这不是我的实际情况,只是我对导入嵌套类的好奇 所以我有一个main.py和test.py 测试.py: class one(): class two(): def twodef(): pass 因此,在我的main.py中,我可以执行“导入测试”或“从测试导入一个”。但我在执行以下操作时出错:“来自测试。一个导入两个。” error : ImportError: No module named one 任何人都能解释这一点吗?内部测试

我是python新手。这不是我的实际情况,只是我对导入嵌套类的好奇

所以我有一个main.pytest.py

测试.py

class one():
   class two():
      def twodef():
         pass
因此,在我的main.py中,我可以执行
“导入测试”
“从测试导入一个”
。但我在执行以下操作时出错:
“来自测试。一个导入两个。”

error : ImportError: No module named one

任何人都能解释这一点吗?

内部测试.py

class One:
    class Two:
        @staticmethod
        def twodef():
          print("twodef")
我的主要逻辑:

from test import One
two_obj = One.Two
two_obj.twodef()
删除类定义末尾的括号

编码标准:

from test import One
two_obj = One.Two
two_obj.twodef()
始终以大写字母声明类名(class one=>class one)

首选项:

from test import One
two_obj = One.Two
two_obj.twodef()
如果python文件中只有一个类,请始终使用该类名命名该文件,但使用小写字母。(test.py=>one.py)。我以前认为这是一个标准,但它似乎被广泛应用。我之所以使用它,是因为,如果项目规模增长,并且最终拥有大量的类和模块,那么它是合乎逻辑的,并且易于访问,而不是访问模块来查找类名。
您可以执行以下操作:

from test import one

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

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

from test import one
my_two = one.two()