【问题标题】:Using Multiple Modules Python使用多个模块 Python
【发布时间】:2016-05-27 19:52:52
【问题描述】:

我目前正在制作一个使用多个模块运行的游戏。但是,当我尝试运行程序时,模块似乎不起作用。例如,当程序无法识别 main 模块中的函数时。

https://gyazo.com/9d303b12707f5829e084125b76d8cdf9

我预计不会收到上面的错误消息。除此之外,我还想了解绝地是什么。

这是我的代码:

主要(模块):

import jedi


def mains():
    jedi = Jedi()


if __name__ == '__main__':
    mains()

绝地(模块):

import pygame

class Jedi(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.move_rights = []
        self.move_lefts = []
        self.image = pygame.image.load("obileft.png")
        self.move_lefts.append(self.image)
        self.image = pygame.transform.flip(self.image, True, False)
        self.move_rights.append(self.image)
        self.sprite_x_change = 0
        self.sprite_y_change = 0
        self.rect = self.image.get_rect()
        self.rect.y = 400
        self.rect.x = 120
        self.nextLevel = False
        self.right = False
        self.left = False
        self.jump = False
        self.lightsaberRight = False
        self.lightsaberLeft = False
    # Mobility: Left, right, up and stop

【问题讨论】:

  • 请将其缩减为minimal reproducible example 并解释: 1. 您的预期;和 2. 发生了什么。
  • 我的猜测是您应该调用jedi.Jedi(),因为您正在尝试创建一个Jedi 对象,该对象是jedi 文件中的一个类。但正如@jonrsharpe 所提到的,没有 MCVE 就很难判断
  • 您可以尝试在您的导入中使用 from jedi import Jedi。在 Python stackoverflow.com/questions/6465549/import-paths-the-right-way 中检查此导入
  • 我已经编辑了代码,对此很抱歉,但我很少在堆栈溢出。

标签: python module pygame


【解决方案1】:

您需要以正确的方式导入该类。例如:

从 package.module 导入类

在你的情况下from jedi import Jedi

【讨论】:

  • 我不明白为什么你不能只“进口绝地”你能解释一下吗?
  • jedi 是您从中导入的模块的名称。 Jedi 是该模块中定义的特定类的名称。 Python 有两种不同的导入方式:import [module]from [module] import [thing]。如果您使用第一个,则从模块中导入所有内容,但是当您使用已导入的内容时,您必须指定它来自哪个模块(因此在您的示例中,您必须使用 @987654326 调用 Jedi 类@)。如果您使用第二种方式,您只导入您要求的模块的特定位,但您可以使用它而不命名模块(因此,只需Jedi)。
猜你喜欢
  • 2013-11-11
  • 1970-01-01
  • 2012-06-20
  • 1970-01-01
  • 1970-01-01
  • 2010-09-25
  • 1970-01-01
  • 2011-02-07
相关资源
最近更新 更多