python导入嵌套类

python import nested class

我是Python的新手。这不是我的典型情况,只是我对导入嵌套类的好奇。

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

测试:PY:

1
2
3
4
class one():
   class two():
      def twodef():
         pass

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

1
error : ImportError: No module named one

有人能解释吗?


你可以做的是只存在from module import name模块名称在全球范围的基本上,名称是顶层模块中定义的代码。定义的名称是在低层次的范围-例如在为您的类的例子是不重要的。你需要的对象,包含要导入的名称和访问它从那里。

1
2
from test import one
my_two = one.two()

你可以做下面的:

1
2
3
4
from test import one

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


在test.py

1
2
3
4
5
class One:
    class Two:
        @staticmethod
        def twodef():
          print("twodef")

我的主逻辑

1
2
3
from test import One
two_obj = One.Two
two_obj.twodef()

把parenthesis是结束了在类的定义。

编码标准:

你可以声明类的名字在骆驼案例(上一级一级>)。

更多关于范围

偏好:

如果你有一个单级内的Python文件,文件名称是总是在这类名称,但在下骆驼的情况。(test.py => one.py)。我想这是我们作为一个标准,但其已经广泛。我会用这个,因为如果项目的特性和尺寸,然后如果你最终有很多类和模块,它的逻辑和易于访问的访问模块,而不是找到的类名称。REF1ref2