问题标签 [module]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1393 浏览

perl - Perl 中的 new Some::Class 和 Some::Class->new() 有什么区别?

许多年前,我记得一位程序员同事这样建议:

可悲的是,现在我不记得/他的原因了。:( 即使构造函数实际上并不存在于 Some::Class 模块中,而是从某处的父级继承,这两种形式都可以正常工作。

这两种形式都与 Some::Class::new() 不同,后者不会将类的名称作为第一个参数传递给构造函数——所以这种形式总是不正确的。

即使这两种形式是等价的,我发现 Some::Class->new() 更清楚,因为它遵循在模块上调用方法的标准约定,而在 perl 中,'new' 方法不是特别 - 构造函数可以被称为任何东西,并且 new() 可以做任何事情(当然我们通常期望它是一个构造函数)。

0 投票
5 回答
35825 浏览

python - Python:导入包含的包

在位于包内的模块中,我需要使用__init__.py该包中定义的函数。如何在包中的模块中导入包,以便我可以使用该功能?

在模块内部导入__init__不会导入包,而是导入名为 的模块__init__,导致两个不同名称的事物副本......

有没有一种pythonic方法可以做到这一点?

0 投票
22 回答
785832 浏览

python - 如何卸载(重新加载)Python 模块?

我有一个长期运行的 Python 服务器,并且希望能够在不重新启动服务器的情况下升级服务。这样做的最佳方法是什么?

0 投票
6 回答
774 浏览

perl - 有没有办法“使用”单个文件,然后在 Perl 中使用多个其他文件?

我想创建几个模块,这些模块将用于我项目中的几乎所有脚本和模块。这些可以在我的每个脚本中使用,如下所示:

是否可以将所有这些使用语句移动到一个新模块Foo::Corge,然后只需要use Foo::Corge在我的每个脚本和模块中?

0 投票
1 回答
81 浏览

debugging - 使用可互换的单例简化调试?

我有一些类,例如那些概述数据库表结构的类或那些概述应用程序配置的类,它们在整个程序执行过程中根本不会改变状态。我目前将这些类作为单例,希望检索信息的类请求类实例(例如,从常见的 getInstance() 方法),然后继续检索他们想要的信息。虽然这可行,但我希望在配置方面允许更多的模块化,这就是我卡住的地方。

我的主要目标是通过模块化配置更轻松地进行调试,同时仍然保持代码的可读性。我不确定我将如何允许交换配置以进行调试,而不包括另一个 Singleton(tm),使用配置设置的类可以从中检索正确的配置实例。

这是针对 PHP Web 应用程序的,但没有这样标记,因为我猜该解决方案很可能与语言无关。

编辑:为了澄清我的问题,尽管就我的问题的答案而言,依赖注入让我很喜欢,但让我提供一个(可能过于简单化)的例子。

假设我有一个 PHP 的 Mysqli 类的包装器,它将简单地使用 Config 单例中标识的任何连接信息......

在这个例子中,Mysql 类将只接受 Config 中包含的设置,并且不能使用除了 Config 中包含的任何配置。在此示例中,将主机/用户名/密码/其他任何内容简单地传递给构造函数可能更有意义,但随后它落在使用 Mysql 类从 Config 单例中检索它的客户端上,并且问题在许多方面再次表现出来更多课程。因为它最终总是从 Config 中检索依赖项,所以无法通过此设置轻松尝试不同的设置。

从我在几个地方读到的内容,包括这里的精彩评论,似乎依赖注入是我最好的选择。对于未来的潜在读者,我在这里找到了一篇关于 PHP 依赖注入的好文章,以及对概念的简化介绍(在 Java 中)

0 投票
3 回答
6150 浏览

python - 为什么在加载模块时使用 Paramiko 会挂起?

将以下内容放入文件hello.pyeasy_install paramiko如果你还没有的话):

适当填写第一行。

现在输入

你会看到一些 ls 输出。

现在改为输入

然后从解释器类型中

瞧!它挂了!如果您将代码包装在一个函数中fooimport hello; hello.foo()改为执行,它将取消挂起。

为什么 Paramiko 在模块初始化中使用时会挂起? Paramiko 是如何知道它在模块初始化期间首先被使用的?

0 投票
2 回答
923 浏览

communication - 模块之间的通信

我有一个由以下三个模块组成的应用程序:

  • 搜索(搜索对象)
  • 列表(显示搜索结果)
  • Painter(允许我编辑对象)- 并不总是加载此模块

(每个对象都是我可以在画家中编辑的图形)。

当我在画家中打开一个对象时,它会添加到画家中已经存在的对象中,我可以移动它并更改它。

我正在使用类似于 EventAggregator 的对象在模块之间进行通信。例如,为了显示搜索结果,我发布了一个由 List 模块捕获的“ShowList”事件(我不确定这是不是最好的方法,如果有人有更好的想法,请发表评论......)。

搜索模块的功能之一要求它在画家中获取所选对象(如果画家可用),我不确定什么是最好的方法......

我想到了这些解决方案:

  1. 每当painter中的选定对象发生更改时,它将发布一个“PainterSelectedObjectChanged”事件,该事件将被搜索模块捕获并存储以供以后使用。

  2. 当搜索模块需要所选对象时,它将发布一个“RequestingPainterSelectedObject”事件,该事件将被画家模块捕获。然后,painter 模块将在 EventArgs 对象中设置“SelectedObject”属性,当发布完成并且我们返回搜索模块时,我们将在 EventArgs 对象中拥有画家选择的对象。

你怎么看?这样做的正确方法是什么?

0 投票
12 回答
1739837 浏览

python - __init__.py 是干什么用的?

__init__.pyPython 源目录中的用途是什么?

0 投票
9 回答
28721 浏览

perl - 如何在 Perl 模块中创建私有函数?

我正在开发一个小的 Perl 模块,由于某种原因,我让使用我的新模块的测试驱动程序脚本调用了我认为是私有的函数之一,并且它成功了。我很惊讶,所以我开始搜索谷歌,我真的找不到任何关于如何在 Perl 模块中创建私有函数的文档......

我看到一个地方说在你的“私人”函数的右大括号后面放一个分号,像这样:

我试过了,但我的驱动程序脚本仍然可以访问我想要私有的功能。

我将编写一个更简短的示例,但这就是我所追求的:

模块 TestPrivate.pm:

驱动程序:TestPrivateDriver.pl

驱动器输出:

所以我在模块的最后一个右大括号后加了一个分号,但输出还是一样的。我真正发现的唯一一件事就是将此行作为第一行添加到我的 private_function 中:

但这似乎很hacky。我没有很多编写 Perl 模块的经验,所以也许我的模块设置不正确?perl 模块中是否可以有私有函数和变量?

谢谢你帮助我学习!

0 投票
6 回答
142963 浏览

python - 如何在 Mac 上安装 Beautiful Soup 模块?

我读了这篇文章但没有找到解决方案: http: //docs.python.org/install/index.html