擅长:python、mysql、java
<p>一些你需要处理的问题。首先在类外赋值<code>f=True</code>不会改变类内的值,因此如果实例化类,它只会抛出一个<code>UnboundLocalError</code>来抱怨f没有初始化。您可以通过使用</p>
<pre><code>fc = firstclass()
</code></pre>
<p>如果没有实例化,你就没有希望它给你想要的价值。因为函数secondclass的print语句不包含在方法中,所以它打印的是类声明的值<code>sum(prices)</code>。该值来自价格的原始声明值,即<code>[]</code>。至少你在问题中是这样表达的。我不知道你是不是想缩进打印语句,这意味着它是第二类的一部分。但是,如果不缩进,将得到与未实例化firstclass相同的结果。你知道吗</p>
<p>要更正此问题,请参见下文。此代码将按预期输出70。你知道吗</p>
<pre><code>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))
</code></pre>
<p>fc现在是类型为<code>firstclass</code>的对象,<code>__init__</code>方法调用了<code>my_function</code>,将值70附加到<code>prices</code>。你知道吗</p>