我试图理解MIT python类中的以下代码。当我按如下方式创建类intSet的对象时,我遇到了其中一个属性的问题。
s=intSet()
并尝试
s.vals()
我收到以下错误
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
s.vals()
TypeError: 'list' object is not callable
这是为什么?我被告知我不应该直接尝试s.vals因为数据隐藏,当我尝试s.vals时会返回正确的列表但是在尝试s.vals()时会出错。有人可以解释这个错误吗?我对OOP和python都很陌生,所以我为我糟糕的质疑道歉。任何帮助是极大的赞赏。
答案 0 :(得分:2)
vals不是一种属性,因此您无法调用它。在python中,括号表示您正在调用方法。所以只需s.vals
答案 1 :(得分:1)
当你使用s.vals()时,它会尝试调用函数&#39; vals&#39;通过变量&#39;然而,当你使用s.vals时,它不会查找函数只返回存储在s.vals中的值。
答案 2 :(得分:0)
您正在尝试呼叫列表中的vals
。你正在做这样的事情[]()
,这是不可能的。
你应该用OOP方式做的是声明这样的getter函数:
class intSet(object):
def __init__(self):
self.__vals = [] # kinda private class instance
# .... other code
@property
def vals(self):
return self.__vals
intset = intSet()
intset.vals # is that list