我试图在类中定义一个变量,然后可以从该类中的函数访问/更改该变量。
例如:
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。
我已经尝试解决这个问题几个小时了,因此我们将不胜感激。
最佳答案
f.addToList
和 f.displayList
不会分别调用 addToList
和 displayList
方法。它们只是对方法本身进行求值(在本例中绑定(bind)到对象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'>
证明这是一个方法引用而不是方法调用。
关于python - 了解类内的 python 变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3762197/