xur*_*r17 2 python methods syntax call
我试图在类中定义一个变量,然后可以从该类中的函数访问/更改该变量.
例如:
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
Run Code Online (Sandbox Code Playgroud)
这应该为我输出列表中的所有项目,但它不会显示任何内容.我假设这是因为我没有正确设置变量的范围.我希望能够从MyFuctions中的所有函数中访问和更改listOfItems.
我一直试图解决这个问题几个小时,所以任何帮助将不胜感激.
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()
Run Code Online (Sandbox Code Playgroud)
这与Ruby不同,Ruby不需要括号进行方法调用(除了在某些情况下消除歧义).
将以下内容添加到程序的末尾是有益的:
print type(f.addToList)
Run Code Online (Sandbox Code Playgroud)
这将输出如下内容:
<type 'instancemethod'>
Run Code Online (Sandbox Code Playgroud)
证明这是方法引用而不是方法调用.
| 归档时间: |
|
| 查看次数: |
823 次 |
| 最近记录: |