2014-10-17 53 views
-3

所以我有一個名爲Player()的Python類,它爲一個簡單的戰鬥算法提供了總共20個參數。問題是,當我輸入Player()和作戰功能分爲一主文件,並已正確導入的一切,我得到這個錯誤:只有兩個參數的Python類?

Traceback (most recent call last): 
File "C:\Users\Thomas\Desktop\Paradisium\main_draft.py", line 53, in <module> 
    combat(player1,player2) 
TypeError: __init__() missing 18 required positional arguments: 'speed', 'agility', 'endurance',   'hitpoints', 'HPregen', 'EPregen', 'originalHP', 'originalEP', 'originalMP', 'MP', 'MGKregen', 'MGKdefence', 'MGKattack', 'debuff', 'buff', 'setType', 'weapon', and 'name' 

正如你可以看到,它的導入正確,抓住了Player()類,對於一些之所以它只有兩個二十變量考慮在此處定義:

player1=Player(90,20,50,90,20,1000,.03,1,1000,20,20,20,1,90,100,2,2,3,None,"Somerled Murdoch") 

我不知道如果我錯了進口或類似的東西,而且我敢肯定沒有限制變量在一個班級。

編輯,下面的代碼:

Player()類:

class Player (object): 
def __init__(self, physicalAttack, defence, speed, agility, endurance, hitpoints, HPregen, EPregen, originalHP, originalEP, originalMP, MP, MGKregen, MGKdefence, MGKattack, 
      debuff, buff, setType, weapon, name): 

combat()功能:

def combat(player1,player2): 

在那裏他們被引進到主文件中的行:

import combatAlgorithmDraft 
Player=combatAlgorithmDraft.Player 
combat=combatAlgorithmDraft.Player 

在那裏他們被稱爲主文件行:

player1=Player(90,20,50,90,20,1000,.03,1,1000,20,20,20,1,90,100,2,2,3,None,"Somerled Murdoch") 
    player2=Player(60,70,60,50,20,1100,.01,1,1100,20,0,0,0,60,0,2,2,0,0,"The Black Knight") 
    combat(player1,player2) 
+1

發佈是造成該錯誤可能是有用的代碼。 – Holloway 2014-10-17 15:18:49

+1

追蹤顯示你正在調用'戰鬥(player1,player2)'。這是'戰鬥'類,預計18個更多的論據。 – dano 2014-10-17 15:19:19

+0

Combat是一個只需要兩個參數的函數。我將發佈整個代碼。 – 2014-10-17 15:22:22

回答

1
combat=combatAlgorithmDraft.Player 

您是不是要做到這一點?

combat=combatAlgorithmDraft.combat 

在任何情況下,要導入其他模塊的東西到當前命名空間中的傳統方式是

from combatAlgorithmDraft import Player, combat 
+1

你應該很快聽到我的facepalm的回聲。 – 2014-10-17 15:37:18