Regras de escopo da classe Python

EDITAR: Parece que este é um "bug" muito antigo ou, na verdade, um recurso. Veja, por exemplo,este e-mail

Estou tentando entender as regras de escopo do Python. Mais precisamente, pensei que os entendesse, mas depois encontrei esse códigoaqui:

x = "xtop"
y = "ytop"
def func():
    x = "xlocal"
    y = "ylocal"
    class C:
        print(x)
        print(y)
        y = 1
func()

No Python 3.4, a saída é:

xlocal
ytop

Se eu substituir a classe interna por uma função, ela razoavelmente forneceUnboundLocalError. Você poderia me explicar por que ele se comporta dessa maneira estranha com as classes e qual é o motivo dessa escolha de regras de escopo?

questionAnswers(2)

yourAnswerToTheQuestion