2016-05-27 96 views
2

我目前正在製作一個使用多個模塊來運行的遊戲。但是,當我嘗試運行該程序時,這些模塊似乎不起作用。例如,當程序不能識別主模塊中的函數時。使用多個模塊Python

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 
+3

請把這個下降到[MCVE],並解釋:1.您所期望的;和2.發生了什麼事情。 – jonrsharpe

+0

我的猜測是你應該調用'jedi.Jedi()',因爲你試圖創建一個'Jedi'對象,它是'jedi'文件的一部分。但作爲@jonrsharpe提到,很難說沒有MCVE –

+0

你可以嘗試在你的導入中使用jedi import Jedi。檢查這在Python中的導入http://stackoverflow.com/questions/6465549/import-paths-the-right-way –

回答

1

您需要導入以正確的方式類。例如:

從package.module進口類

你的情況from jedi import Jedi

+0

我不明白你爲什麼不能只是'導入絕地',你能解釋這個給我嗎? – Fabmaur

+2

'jedi'是您要從中導入的模塊的名稱。 'Jedi'是該模塊中定義的特定類的名稱。 Python有兩種不同的導入方式:'import [module]'或'from [module] import [thing]'。如果你使用第一個,你從模塊中導入所有東西,但是當你使用你導入的東西時,你必須指定它來自哪個模塊(所以在你的例子中,你必須用jedi調用Jedi類.Jedi')。如果你使用第二種方法,你只需要導入你要求的模塊的特定位,但是你可以在不命名模塊的情況下使用它(所以,只是'Jedi')。 –