我正在尝试在类中定义一个变量,然后可以从该类中的函数访问/更改该变量。
例如:
class MyFunctions():
def __init__( self):
self.listOfItems = []
def displayList( self):
"""Prints all items in listOfItems)"""
for item in self.listOfItems:
print item
def addToList(self):
"""Updates all mlb scores, and places results in a variable."""
self.listOfItems.append("test")
f = MyFunctions()
f.addToList
f.displayList
这应该为我输出列表中的所有项目,但它不会显示任何内容。我假设这是因为我没有正确设置变量的范围。我希望能够从MyFuctions中的所有函数中访问和更改listOfItems。
我一直试图解决这个问题几个小时,所以任何帮助都会非常感激。
答案 0 :(得分:6)
f.addToList
和f.displayList
不会分别调用方法addToList
和displayList
。他们只是简单地评估方法(在这种情况下绑定到对象f
)。添加括号以调用方法的更正版本中的方法:
class MyFunctions():
def __init__( self):
self.listOfItems = []
def displayList( self):
"""Prints all items in listOfItems)"""
for item in self.listOfItems:
print item
def addToList(self):
"""Updates all mlb scores, and places results in a variable."""
self.listOfItems.append("test")
f = MyFunctions()
f.addToList()
f.displayList()
这与Ruby不同,Ruby不需要括号进行方法调用(除非在某些情况下消除歧义)。
将以下内容添加到程序的末尾是有益的:
print type(f.addToList)
这将输出如下内容:
<type 'instancemethod'>
证明这是方法引用而不是方法调用。