首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要python包和模块的解释

我需要python包和模块的解释
EN

Stack Overflow用户
提问于 2011-09-20 04:13:46
回答 2查看 284关注 0票数 2

我正在写我的第一个python脚本,这个包/模块的事情让我抓狂。让我们从我的文件夹布局开始

代码语言:javascript
复制
builder.py
-buildModule\__init__.py
-buildModule\AppList.py
-buildModule\BuildClass.py
-buildModule\ConfigSystem.py
-buildModule\MenuSystem.py
-buildModule\Singleton.py

好的,我的__init__.py看起来像这样

代码语言:javascript
复制
from ConfigSystem import *
from BuildClass import *
from MenuSystem import *
from AppList import *
from buildModule.Singleton import Singleton

现在,我尝试将我的configsystem装饰成一个单例,这样我的单例看起来就像

代码语言:javascript
复制
class Singleton:
    def __init__(self, decorated):
        self._decorated = decorated

    def Instance(self):
        try:
            return self._instance
        except AttributeError:
            self._instance = self._decorated()
            return self._instance

    def __call__(self):
        raise TypeError(
            'Singletons must be accessed through the `Instance` method.')

现在,使用我的configsystem类,如果我正确地阅读了手册,这应该是可行的。

代码语言:javascript
复制
import Singleton


@Singleton
class ConfigSystem:

但是我得到了

代码语言:javascript
复制
TypeError: 'module' object is not callable

我已经多次阅读了手册中的模块部分,但我并不完全理解。为什么这不起作用?

有没有什么模块/包教程比手册写得更清楚/不同?

EN

回答 2

Stack Overflow用户

发布于 2011-09-20 04:16:22

您需要将import Singleton更改为from Singleton import Singleton (或者按照Alex的建议将@Singleton更改为@Singleton.Singleton

通常,您应该使用限定导入来避免名称空间冲突,例如,使用SomeModule.SomeClass这样的调用使用import SomeModule,或者为了简洁起见,使用SM.SomeClassSM.some_function这样的调用使用import SomeModule as SM,而不是从from SomeModule import *这样的模块导入所有内容。

您会遇到名称冲突,其中Singleton引用的是模块(例如,Singleton.py是类/函数/变量的集合的文件),而不是单例类(class Singleton(object))。具体地说,在您的装饰器中,@Singleton Singleton引用的是模块( import some_modulefrom some_module import a_class_or_object),而不是类或函数。

票数 3
EN

Stack Overflow用户

发布于 2011-09-20 04:19:35

import Singleton更改为from Singleton import Singleton,或将@Singleton更改为@Singleton.Singleton

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7476742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档