Мне кажется, что вы хотите получить, что:
class Classy :
CLASSIES = []
def __init__(self) :
self.hi = "HI!"
Classy.CLASSIES.append(self)
for i in xrange(4):
Classy()
for x in Classy.CLASSIES:
print x
результата
<__main__.Classy instance at 0x011DF3F0>
<__main__.Classy instance at 0x011DF440>
<__main__.Classy instance at 0x011DF418>
<__main__.Classy instance at 0x011DF2B0>
EDIT
Обратите внимание, что с кодом Lattyware:
class Classy :
CLASSIES = []
idC = id(CLASSIES)
def __init__(self) :
self.hi = "HI!"
#Classy.CLASSIES.append(self)
Classy.CLASSIES = [Classy() for _ in xrange(0,4)]
print Classy.idC
print id(Classy.CLASSIES)
print 'Classy.idC==id(Classy.CLASSIES) :',Classy.idC==id(Classy.CLASSIES)
результат
18713576
10755928
Classy.idC==id(Classy.CLASSIES) : False
В то время как для цикла delnan'code он не отображается.
Однако это легко исправить:
написание
Classy.CLASSIES[:] = [Classy() for _ in xrange(0,4)]
или
Classy.CLASSIES.extend(Classy() for _ in xrange(0,4))
вместо
Classy.CLASSIES = [Classy() for _ in xrange(0,4)]
это зависит от того, что требуется.
EDIT 2
Методы могут ссылаться на глобальные имена таким же образом, как обычные функции. Глобальная область, связанная с методом, представляет собой модуль , содержащий его определение. (Класс никогда не используется в качестве глобального масштаба.)
http://docs.python.org/2/tutorial/classes.html#class-definition-syntax
Класс имеет пространство имен, реализованный в словаре объекта. ссылки класса атрибутов переводятся в поиски в этом словаре, например, C.x
переводится на C.__dict__["x"]
http://docs.python.org/2/reference/datamodel.html#new-style-and-classic-classes
class Classy :
CLASSIES = []
print '"CLASSIES" in globals()',"CLASSIES" in globals()
print '"CLASSIES" in Classy.__dict__ ==',"CLASSIES" in Classy.__dict__
результат
"CLASSIES" in globals() False
"CLASSIES" in Classy.__dict__ == True
Delnan, как вы продолжать делать вид что CLASSIES является глобальным?
Я что-то не понял в ваших спорах с Lattyware?
Настоящий вопрос - это то, что вы пытаетесь выполнить с помощью этого перемещения. – joojaa
@joojaa Я бы не сказал, что варианты использования для этого - это * то, что неясно. –
Ну, это немного, я бы понял, действительно ли вы инициализировали детей, но поместив их в переменную класса, это становится неясным. Вы в основном инициируете что-то такое, которое будет иметь 4 разных экземпляра фиксированных других лиц. Но может быть любое количество разных ребятишек. Странно, что классный экземпляр не является частью списка, я бы это понял, если бы начальный класс был частью списка. Или вы смотрите на массив Боргов? – joojaa