假设我有一个模块foo
和一个子模块foo.bar
。如果要在中使用方法foo.bar
,我是否需要foo.bar
直接导入还是foo
足够导入?
例如,以下引发错误:
import foo
foo.bar.my_method()
和以下作品:
import foo.bar
foo.bar.my_method()
但是我不确定这是否通常是需要的,或者我的代码本身是否有问题。(我认为通常需要直接导入子模块…但是我可能发誓我看到没有直接导入子模块的代码仍然可以正常工作。)
如果要在中使用方法
foo.bar
,我是否需要foo.bar
直接导入还是foo
足够导入?
您需要显式导入子模块。执行import foo.bar
将自动导入父模块foo
,并且必须†绑定名称foo
,但反之则不正确。
但是我可能发誓我看到了没有直接导入但仍然可以正常工作的代码
是。有时,无需显式导入即可访问子模块。当父模块本身导入子模块时,就会发生这种情况。除非有文档说明,否则切勿依赖它,因为它可能是实现细节,并且在库版本升级后可能会更改而不会发出警告。
作为展示 这两种
行为的流行图书馆的示例,请参阅requests==2.18.4
。该程序包具有称为sessions
和的子模块help
(以及其他子模块)。导入requests
将requests.sessions
隐式可用,但是requests.help
直到显式导入才可用。当执行初始化包的源代码,你会发现该sessions
子模块导入的数据,但help
子模块没有。
† 这是有道理的,因为后续的使用foo.bar
需要对现有foo
对象进行属性访问。请注意,from foo.bar import something
并 没有
绑定的名称foo
,也没有foo.bar
,尽管这两个模块foo
和foo.bar
进口和缓存到sys.modules
。
我回到Java并回顾了我的一些旧代码,我看到了很多我已经做过的地方 或者从swing/awt包中实际导入特定类。我不记得是否需要导入java。awt.*在javax中使用任何东西。摇摆。*或者我会导入java。awt.*还有别的原因吗?换句话说,导入java的目的是什么。awt.*?我觉得使用JButton、JFrame等所需的一切都是javax。摇摆。
问题内容: 只是想知道我们如何在node.js 8中导入模块-我们仍在使用吗? 还是我们仍然需要babel来使用? 我一直在挖掘,但似乎没有答案。如果我们仍然必须使用require,为什么节点还不能实现? 问题答案: UPDATE-2018.11.15↓ 简短答案 我们仍在使用 长答案 ESM加载已部分降落在2017年9月发布的node 上。正因为如此,它已经成为规范的一部分,并且已经作为实验功能
我和同事一起创建了一个Angular 5应用程序。我为我的所有界面创建了一个文件夹,并按功能进行分组。然而,我没有在它们上包含任何导出符号,并且在使用它们时,我从不需要导入它们……它们只存在,不会产生任何编译错误。我喜欢这种方式,因为它使代码更干净,但我只是在利用一些bug吗?我的同事以“正确”的方式完成了它,并且需要在任何时候导入他想要使用的界面。有什么想法吗?您应该如何创建存在于单独文件中的接
问题内容: 对于我因此遇到的所有Dockerfile(虽然数量不多),它们所有人都使用了子句作为现有映像的基础,即使它是。 这个条款是必需的吗?有没有子句的Dockerfile是否可能?这样创建的容器可以执行任何操作吗? 编辑 我读 没有FROM指令的Dockerfile没有父映像,称为基本映像。 https://docs.docker.com/glossary/?term=parent%20im
问题内容: 我有一个非常简单的文件: 而且有效。 但是,当我删除元素时,应用程序看不到实体(所有类都带有注释)。 是否有自动扫描类的机制? 问题答案: 你可以使用 该文件定义了一个名为的持久性单元,它使用JTA感知数据源。所述和元素指定管持久类:实体类,可嵌入类和超类映射。该元素指定JAR文件都包含持久化类管理的打包持久单元可见,而该class元素明确命名持久化类管理。 对于,也可以进行设置和配置
在Xamarin网站上,它说: 最低操作系统版本为Windows 7。Xamarin。Forms Windows支持需要Windows 8.1和Xamarin。Forms UWP支持需要Windows 10 这是否意味着如果我想在Android和iOS应用程序的Xamarin.FormsAPI中使用UI控件和XAML,我需要有Windows 10?还是只有当我想将我的应用程序部署到Windows手