我是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
任何人都可以解释这个吗?
答案 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()
删除类定义末尾的括号。
编码标准:
始终在上层驼峰案例中声明您的类名(第一类=>第一类)。
<强>偏爱:强>
如果你在python文件中有一个类,那么总是在该类名中命名该文件,但是在较低的camel情况下。 (test.py =&gt; one.py)。我之前认为这是一个标准,但它似乎广泛实践。我会使用这个因为,如果然后项目大小增加,如果你最终有很多类和模块,它是合乎逻辑且易于访问的,而不是访问模块来查找类名。 Ref1 Ref2