我对python非常陌生,我一直在尝试使用tkinter按钮命令来运行函数,它可以工作,但是append()没有执行,这意味着它没有附加到列表中。你知道吗
包含append的列表和函数在类外部,然后通过使用tkinter button命令在类内部进行分类
我试着把函数放在类中,它可以工作,但是追加不会再添加到列表中。你知道吗
这是我编写的代码,有点类似于真实的代码
prices = []
f = True
class firstclass():
def __init__(self):
while f == True:
my_function()
f = False
def my_function():
prices.append(70)
class secondclass():
def __init__(self):
pass
print(sum(prices))
真正的代码样本在这个环节,请考虑到这一点 python: Appending a value to a list outside the class, function with append also outside the class, but function is called within a class
我原以为它会打印附加值70,但它仍然打印0
一些你需要处理的问题。首先在类外赋值
f=True
不会改变类内的值,因此如果实例化类,它只会抛出一个UnboundLocalError
来抱怨f没有初始化。您可以通过使用如果没有实例化,你就没有希望它给你想要的价值。因为函数secondclass的print语句不包含在方法中,所以它打印的是类声明的值
sum(prices)
。该值来自价格的原始声明值,即[]
。至少你在问题中是这样表达的。我不知道你是不是想缩进打印语句,这意味着它是第二类的一部分。但是,如果不缩进,将得到与未实例化firstclass相同的结果。你知道吗要更正此问题,请参见下文。此代码将按预期输出70。你知道吗
fc现在是类型为
firstclass
的对象,__init__
方法调用了my_function
,将值70附加到prices
。你知道吗这有两个原因。你知道吗
firstclass
来实际初始化 建造师。你知道吗False
赋值给变量f
不属于类的范围。如果你仍然分配 它被认为是本地的。现在翻译 检测到您分配了它,而while循环没有任何本地 引用f
,因为您没有在构造函数下定义它。 详见this答案。你知道吗以下是完整的代码:
相关问题 更多 >
编程相关推荐