Python нелокальный оператор в определении класса

Я пытаюсь провести некоторый анализ области видимости в исходном коде Python 3, и я застрял в том, как оператор нелокального оператора работает внутри определения класса.

Как Я понимаю, что определение класса выполняет свое тело внутри нового пространства имен (назовите его dict) и связывает имя класса с результатом типа (name, base, dict). имеет ссылку на себя и повторяется постоянно.

Мой список определен как type 'a m_list = Nil | Минусы 'a * ((' a m_list) ref) .

На данный момент у меня есть:

let is_cyclic list =
  let rec check xs = 
    match (!xs) with
     |Nil -> false
     |Cons(_,v) -> ((!v)==list)||check v in
  match list with
   |Nil -> false
   |Cons(_, x) -> check x ;;

, но это не совсем правильно, и я не уверен, как действовать дальше ... спасибо за любые помогите!

7
задан anon 28 March 2011 в 23:36
поделиться