2016-07-12 63 views
1

我有一個對象需要5個參數的函數。我創建了該對象的一個​​實例並運行函數define(param1,2,3,4,5),它給了我一個缺少第五個參數的響應。蟒蛇報告缺失參數

這裏是我的代碼部分:

class KeyProperties: #Object 
path = None 
keytype = None 
image = None 
name = None 
keyid = None 
occupied = None 

def define(self, name, path, image, keytype, keyid): #The function that is used 
    self.path = path 
    self.keytype = keytype 
    self.image = image 
    self.name = name 
    self.keyid = keyid 
    self.occupied = True 

的代碼,當我運行定義():

key = KeyProperties 
    key.define(param1,param2,param3,param4,param5) 

,並給出了此錯誤

TypeError: define() missing 1 required positional argument: 'keyid'

回答

8

您當前key不是KeyProperties的實例,而是類本身。因此define將需要6個參數(其包括self):

爲了解決這個問題,實例化類:

key = KeyProperties() 
#     ^^ 

的第一個參數的實例方法是實例本身(通常寫爲self)。實例化該類自動爲您傳遞self,然後define現在可以根據您的意願採用5個參數。