我对 python 很陌生,我一直在尝试执行此代码,其中我使用 tkinter 按钮命令来运行函数,它可以工作,但append() 没有执行,这意味着它不会附加到列表中。
列表和包含附加的函数位于类外部,然后通过使用 tkinter 按钮命令在类内进行分类
我尝试将函数放入类中,它可以工作,但附加不会再次添加到列表中。
这是我编写的代码,与真实代码有些相似
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:将值附加到类外部的列表,带有附加功能的函数也在类外部,但函数在类内调用 https://stackoverflow.com/questions/57015203/python-appending-a-value-to-a-list-outside-the-class-function-with-append-also
我预计它会打印附加值 70,但它仍然打印 0
您需要处理一些问题。第一次分配f=True
类外部不会改变内部的值,所以如果你实例化该类,它只会抛出一个UnboundLocalError
抱怨 f 未初始化。您可以通过实例化该类来自己尝试
fc = firstclass()
如果没有实例化,你就没有希望它为你提供你想要的值。由于函数 Secondclass 的打印语句不包含在方法中,因此它打印零,因此它打印该值sum(prices)
该类被声明。该值来自价格的原始申报值,即[]
。至少这就是您在问题中所展示的方式。我不确定您是否打算缩进打印语句,这意味着它是二等的一部分。但是,如果您没有缩进,您将得到与尚未实例化第一类相同的结果。
要纠正此问题,请参见下文。此代码将按照您的预期输出 70。
prices = []
class firstclass():
def __init__(self):
my_function()
def my_function():
prices.append(70)
class secondclass():
def __init__(self):
pass
print('before instantiation', sum(prices))
fc = firstclass()
print('after instantiation', sum(prices))
fc 现在是类型的对象firstclass
和__init__
方法已调用my_function
将值 70 附加到prices
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)