2013-06-05 6 views
0

Может ли переменная класса, например, class Foo быть объектом Foo?Может ли переменная класса быть экземпляром класса?

Например, я пытаюсь построить класс для конечного поля порядка 11, и я хочу, чтобы выбранный генератор (2) был связан с этим классом экземпляром.

Что я имею в виду:

class FiniteField11: 
    generator = FiniteField11(2) 

    def __init__(self, element): 
     self.elt = element 

Это не компилируется; У меня есть NameError: name 'FiniteField11' is not defined. Я понимаю, что здесь есть проблема с курицей или яйцом, но есть ли способ достичь того, чего я хочу?

Извините, если это дубликат, но я не могу найти его.

ответ

3

Вы можете сделать что-то вроде этого:

class FiniteField11: 
    def __init__(self, element): 
     self.elt = element 
FiniteField11.generator = FiniteField11(2) 

Ваш код не потому, что FiniteField11 не был определен, когда класс Defintion был разобран.

1

Да, это может быть возможно, но имя не существует, пока инструкция класса не завершится. Следовательно, вы должны установить эту переменную класса после создания класса, возможно, чуть ниже блока класса или в инициализаторе экземпляра.

Смежные вопросы