gpt4 book ai didi

python - 了解类内的 python 变量范围

转载 作者:行者123 更新时间:2023-11-28 21:30:04 24 4
gpt4 key购买 nike

我试图在类中定义一个变量,然后可以从该类中的函数访问/更改该变量。

例如:

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.addToListf.displayList 不会分别调用 addToListdisplayList 方法。它们只是对方法本身进行求值(在本例中绑定(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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com