2010-03-08 76 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方法

当补充的是在实例对象上调用时,实例对象作为自变量传递给方法。拥有自变量将类方法与实例方法区分开来。