Python

时间:2015-07-27 18:35:13

标签: python class

在我的Python版本(下面的版本信息)中,以下内容在分配变量e的行中断(但在此之前工作正常):

class Foo:
  a = 1
  b = a + 2
  print(b) # works
  c = [ "apple", "banana", "cherry", "dragonfruit" ]
  d = [ "I like " + fruit for fruit in c]
  print(d) # works
  d2 = c + ["elderberry"]
  print(d2) # works
  e = ["I like " + c[i] for i in range(4)] #ERROR: NameError: name 'c' is not defined
  print(e)

这令我感到惊讶;我无法判断这是预期的行为还是Python中的错误。如果这是故意的,有人可以解释这个意图吗?

从我所见,问题只发生在静态类变量的上下文中。换句话说,当然,如果我取代"类Foo"用"如果是真的"然后整个过程没有错误。

我在OS-X 10.9.5上使用以下版本的Python: Python 3.4.3(v3.4.3:9b73f1c3e601,2015年2月23日,02:52:03)

0 个答案:

没有答案