2010-03-08 74 views
1

我是一個新的Python程序員,在類中使用'self'時有點麻煩。例如:Python 3.1.1類問題

class data: 
    def __init__(self): 
     self.table = [] 
    def add(self, file): 
     self.table.append(file) 
data.add('yes') 

在這個函數中,我想讓table是變量存儲在類數據中並使用add來修改它。然而,當我運行此腳本它給我的錯誤:

Traceback (most recent call last): 
    File "/Projects/Python/sfdfs.py", line 7, in <module> 
    data.add('yes') 
TypeError: add() takes exactly 2 positional arguments (1 given) 

我認爲我想調用的函數在這種情況下,錯誤的方式,因爲這句法是非常相似的一個例子蟒蛇文檔中:http://docs.python.org/3.1/tutorial/classes.html

回答

8

你首先需要做的實例的類的

mydata = data() 

然後你可以調用的方法 - 在例如,當然,的類不

mydata.add('yes') 
2

您需要將類實例之前,你可以調用它的方法:

mydata = Data() 
mydata.add('yes') 
1

您正在試圖調用data.add ()有點像你會在Java中調用一個靜態方法。 嘗試,而不是這樣做:

d = data() 
d.add('yes') 

self參數告訴它data類型的對象進行操作的方法。

2

您正在對類對象調用add方法而不是類的實例。

它看起來像你想要做的是:

classInst =數據()了#make實例

classInst.add( 「東西」)#CALL方法

當補充的是在實例對象上調用時,實例對象作爲自變量傳遞給方法。擁有自變量將類方法與實例方法區分開來。